簡體   English   中英

如何使用 SqlAlchemy declarative_base 創建單個表

[英]How to create a single table using SqlAlchemy declarative_base

要創建User表,我必須使用drop_allcreate_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM