[英]alembic create_table using declarative_base derived objects
[英]How to create a single table using SqlAlchemy declarative_base
要創建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)
您可以創建/刪除單個表:
User.__table__.drop(engine)
User.__table__.create(engine)
from app import db
from models import User
User.__table__.create(db.engine)
User.__table__.drop(db.engine)
完成任務的另一種方法:
Base.metadata.tables['users'].create(engine)
Base.metadata.tables['users'].drop(engine)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.