2
要創建User
表,我必須使用drop_all
,然後使用create_all
方法。但是這兩個函數重新啓動整個數據庫。我想知道是否有一種方法可以創建User
表而不刪除(或刪除)數據庫中的任何現有表?如何使用SqlAlchemy創建單個表declarative_base
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)
你爲什麼 「必須」 前'create_all'執行'drop_all'?如果沒有其他問題,'create_all'應該沒問題。你通常可以對alembic和遷移感興趣。 –
['MetaData.drop_all()'](http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData.drop_all)刪除存儲在所述元數據中的所有表格,而不是全部D B。 –