2017-07-22 64 views
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) 
+4

你爲什麼 「必須」 前'create_all'執行'drop_all'?如果沒有其他問題,'create_all'應該沒問題。你通常可以對alembic和遷移感興趣。 –

+0

['MetaData.drop_all()'](http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData.drop_all)刪除存儲在所述元數據中的所有表格,而不是全部D B。 –

回答

相關問題