Flask-SQLAlchemy - 何时创建和销毁表/数据库?

Ale*_*ley 13 python mysql sqlalchemy flask flask-sqlalchemy

我对标题中提到的主题感到有些困惑.

因此,当启动Flask应用程序时,SQLAlchemy是否会搜索SQLALCHEMY_DATABASE_URI正确的MySQL数据库.然后,如果表已经不存在,它会创建表吗?

如果编程到文件中的SQLALCHEMY_DATABASE_URI变量的数据库config.py不存在怎么办?

如果该数据库存在,并且只存在少数几个表(SQLAlchemy代码中编码的表多于实际MySQL数据库中存在的表),该怎么办?它会删除这些表,然后使用当前规范创建新表吗?

如果这些表全部存在怎么办?它们会被删除并重新创建吗?

我试图理解整个过程是如何工作的,以便我(1)在对模式进行更改时不丢失数据库信息,(2)可以编写必要的代码来完全管理SQLAlchemy如何以及何时与实际数据库.

Mar*_*ers 13

表不是自动创建的; 你需要调用SQLAlchemy.create_all()方法来显式地让它为你创建表:

db = SQLAlchemy(app)
db.create_all()
Run Code Online (Sandbox Code Playgroud)

例如,您可以使用命令行实用程序执行此操作.或者,如果您部署到Google App Engine等PaaS,则会使用专用的仅限管理员的视图.

这同样适用于数据库表销毁; 使用该SQLAlchemy.drop_all()方法.

请参阅文档创建和删除表章节,或者查看Mega Flask教程数据库章节.