使用SQLAlchemy

时间:2017-03-30 21:14:52

标签: python sqlalchemy

在使用Declarative Base时,如何使用SQLAlchemy生成SQL / Migrate Code / Whatever?

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来说还是新手

谢谢!

1 个答案:

答案 0 :(得分: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/