【问题标题】:Generate schema SQL with SQLAlchemy使用 SQLAlchemy 生成模式 SQL
【发布时间】:2017-03-31 07:29:05
【问题描述】:

在使用声明式基础时,如何使用 SQLAlchemy 生成 SQL/迁移代码/任何内容?

from sqlalchemy import *
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
engine = create_engine('mysql://root:password@localhost/mydb_dev', echo=True)
metadata = MetaData(bind=engine)


class User(Base):
    __table__ = Table("users", metadata, autoload=True)

    id = Column(Integer, primary_key=True)
    display_name = Column(String)
    email = Column(String)
    password = Column(String)

    def __repr__(self):
        return "<User(id='{}', display_name='{}', email='{}')>".format(self.id, self.display_name, self.email)


class Site(Base):
    __table__ = Table("sites", metadata, autoload=True)

    id = Column(Integer, primary_key=True)
    name = Column(String)
    urls = relationship("URL")

    def __repr__(self):
        return "<Site(id='{}', name='{}')>".format(self.id, self.name)

到目前为止,我有这个,我想看看 SQLAlchemy 会生成什么作为模式。

或者,SQLAlchemy 是否完全做到这一点?这是我单独创建和管理数据库及其架构的情况,我只是更新我的实体以反映它?

请理解我已经习惯了 Doctrine2,而且我对 SQLAlchemy 很陌生

谢谢!

【问题讨论】:

标签: python sqlalchemy


【解决方案1】:

您可以通过调用来创建数据库模型:

metadata.create_all()

http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.MetaData.create_all

请注意,这仅适用于创建以前不存在的模型,不处理更新或降级。查看 alembic 以获得更精细的控制:

http://alembic.zzzcomputing.com/en/latest/

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2012-11-18
    • 2017-08-10
    • 2020-09-28
    相关资源
    最近更新 更多