9

在 sqlalchemy (0.8.2) 中,drop_all()两者create_all()都有一个tables参数,可以是要删除或添加的 Table 对象的列表。

在 flask-sqlalchemy (1.0) 这些方法没有这个参数。

使用烧瓶炼金术删除/创建数据库表子集的适当方法是什么?

4

1 回答 1

10

Flask-SQLAlchemy 的create_all()方法将使用 Base 的元数据通过调用 SQLAlchemy 的MetaData.create_all()方法来创建表。此方法允许指定一个表对象列表。您还需要为它提供一个“绑定”,它基本上就是引擎。您可以使用Flask-SQLAlchemy的引擎属性检索它。

所以,你应该可以做...

db = SQLAlchemy(app)

class MyTable(db.Model):
    ...

class MyOtherTable(db.Model):
    ...

db.metadata.create_all(db.engine, tables=[
    MyTable.__table__,
    ...
])

这假设您使用的是单个数据库。否则,您需要create_all()使用get_engine().

于 2013-10-08T09:22:03.217 回答