如何使用SqlAlchemy declarative_base创建单个表

时间:2017-07-22 22:21:31

标签: python sql sqlalchemy declarative

要创建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)

3 个答案:

答案 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)