flask-sqlalchemy对特定表使用drop_all和create_all

时间:2013-10-07 18:37:16

标签: python sqlalchemy flask-sqlalchemy

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

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

使用flask-alchemy?

删除/创建数据库表子集的适当方法是什么?

1 个答案:

答案 0 :(得分:8)

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

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

db = SQLAlchemy(app)

class MyTable(db.Model):
    ...

class MyOtherTable(db.Model):
    ...

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

这假设您使用的是单个数据库。否则,您需要使用get_engine()对每个数据库进行create_all()调用。