簡體   English   中英

使用SQLAlchemy生成架構SQL

[英]Generate schema SQL with SQLAlchemy

使用聲明式基礎時,如何使用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還是很陌生

謝謝!

您可以通過調用以下命令來創建數據庫模型:

metadata.create_all()

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

請注意,這僅適用於創建先前不存在的模型,並且不處理更新或降級。 檢查出Alembic以獲得更好的控制:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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