要创建User
表,我必须使用drop_all
,然后使用create_all
方法。但是这两个函数重新启动整个数据库。我想知道是否有办法在不擦除(或删除)数据库中任何现有表的情况下创建User
表?
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:pass@01.02.03.04/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)
答案 0 :(得分:17)
你可以create/drop individual tables:
{{1}}
答案 1 :(得分:0)
from app import db
from models import User
User.__table__.create(db.engine)
User.__table__.drop(db.engine)
答案 2 :(得分:0)
另一种完成任务的方法:
Base.metadata.tables['users'].create(engine)
Base.metadata.tables['users'].drop(engine)