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

2024-05-23 20:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我对标题中提到的题目有点困惑。

所以,当Flask应用程序启动时,SQLAlchemy会搜索SQLALCHEMY_DATABASE_URI以获得正确的MySQL数据库。那么,如果表还不存在,它会创建这些表吗?

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

如果该数据库存在,并且只有几个表存在(与实际的MySQL数据库相比,编码到SQLAlchemy代码中的表更多),该怎么办?它是否会删除这些表,然后使用当前规格创建新表?

如果这些桌子都存在呢?它们会被抹掉重新创造吗?

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


Tags: 文件代码pyconfig数据库应用程序标题flask
1条回答
网友
1楼 · 发布于 2024-05-23 20:25:31

表不是自动创建的;您需要调用^{} method显式地让它为您创建表:

db = SQLAlchemy(app)
db.create_all()

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

这同样适用于数据库表销毁;使用^{} method

请参阅Creating and Dropping tables chapter of the documentation,或查看database chapter of the Mega Flask Tutorial

您还可以将此任务委托给Flask-Migrate或类似的模式版本控制工具。这些帮助您记录和编辑模式创建和迁移步骤;实际项目的数据库模式从来不是静态的,您希望能够在版本或模式之间移动现有数据。创建初始模式只是第一步。

相关问题 更多 >