To create the User
table I have to use drop_all
and then create_all
methods. But these two functions re-initiate an entire database. I wonder if there is a way to create the User
table without erasing (or dropping) any existing tables in a database?
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
name = sqlalchemy.Column(sqlalchemy.String)
def __init__(self, code=None, *args, **kwargs):
self.name = name
url = 'postgresql+psycopg2://user:[email protected]/my_db'
engine = sqlalchemy.create_engine(url)
session = sqlalchemy.orm.scoped_session(sqlalchemy.orm.sessionmaker())
session.configure(bind=engine, autoflush=False, expire_on_commit=False)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
drop_all
beforecreate_all
? If there are no other issues,create_all
should be fine. And you can generally get interested in alembic and migrations. – RecuperatorMetaData.drop_all()
drops all tables stored in said metadata, not all in DB. – Pluralize