Flask + SqlAlchemy ALTER table
Flask + SqlAlchemy ALTER table
我正在开发基于 Flask + SqlAlchemy + MySQL 的 Web 应用程序,我遵循了 that answer。
我必须更改我的模型,所以我需要更改数据库 table 添加一列,但是 我不想丢失存储的数据 删除并重新创建它。
我阅读了一些有关 Flask-Migrate 和 Alembic 的内容...它们对解决我的问题至关重要吗?我能做什么?
是的,它们可以提供帮助。我建议使用来自 SQLAlchemy 作者的 Alembic (http://alembic.readthedocs.org/en/latest/)。
对于迁移,您需要定义要进行的更改。在您的情况下,您想要添加一列。我认为这不会成为问题。添加列通常不会导致数据丢失。更改类型或删除列会导致数据丢失。
您当然也可以直接更新 table,只需更新您的模型以反映新列即可。但是迁移通常是更易于管理的方式。
一个简单的解决方案是 SQL 中的 ALTER TABLE
,然后更改 table 中的值。
Flask-Migrate
Flask-Migrate 是一个扩展,它使用 Alembic 处理 Flask 应用程序的 SQLAlchemy 数据库迁移。数据库操作通过 Flask command-line 接口可用。
>>> pip install flask-migrate
我正在开发基于 Flask + SqlAlchemy + MySQL 的 Web 应用程序,我遵循了 that answer。 我必须更改我的模型,所以我需要更改数据库 table 添加一列,但是 我不想丢失存储的数据 删除并重新创建它。
我阅读了一些有关 Flask-Migrate 和 Alembic 的内容...它们对解决我的问题至关重要吗?我能做什么?
是的,它们可以提供帮助。我建议使用来自 SQLAlchemy 作者的 Alembic (http://alembic.readthedocs.org/en/latest/)。
对于迁移,您需要定义要进行的更改。在您的情况下,您想要添加一列。我认为这不会成为问题。添加列通常不会导致数据丢失。更改类型或删除列会导致数据丢失。
您当然也可以直接更新 table,只需更新您的模型以反映新列即可。但是迁移通常是更易于管理的方式。
一个简单的解决方案是 SQL 中的 ALTER TABLE
,然后更改 table 中的值。
Flask-Migrate
Flask-Migrate 是一个扩展,它使用 Alembic 处理 Flask 应用程序的 SQLAlchemy 数据库迁移。数据库操作通过 Flask command-line 接口可用。
>>> pip install flask-migrate