web-dev-qa-db-ja.com

SqlAlchemydeclarative_baseを使用して単一のテーブルを作成する方法

Userテーブルを作成するには、drop_allを使用してから、create_allメソッドを使用する必要があります。ただし、これら2つの関数は、データベース全体を再起動します。データベース内の既存のテーブルを消去(または削除)せずに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:[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)
7
alphanumeric

次のことができます 個々のテーブルを作成/削除

User.__table__.drop(engine)
User.__table__.create(engine)
23
univerio