【问题标题】:Flask + SqlAlchemy ALTER tableFlask + SqlAlchemy ALTER 表
【发布时间】:2015-12-16 10:56:36
【问题描述】:

我正在开发一个基于 Flask + SqlAlchemy + MySQL 的 Web 应用程序,我关注了that answer。 我必须更改我的模型,因此我需要更改 db 表添加一列,但 我不想丢失存储的数据删除并重新创建它。

我读过一些关于 Flask-Migrate 和 Alembic 的文章……它们对于解决我的问题是否必不可少?我能做什么?

【问题讨论】:

    标签: python mysql flask-sqlalchemy tablecolumn


    【解决方案1】:

    是的,它们可以提供帮助。我会推荐来自 SQLAlchemy 的作者的 Alembic (http://alembic.readthedocs.org/en/latest/)。

    通过迁移,您需要定义要进行的更改。在您的情况下,您想添加一列。我不认为这会是个问题。添加列通常不会导致数据丢失。更改类型或删除列会导致数据丢失。

    您当然也可以直接更新表格,只需更新您的模型以反映新列。但是迁移通常是更易于管理的方式。

    【讨论】:

    • 我在 10 分钟内使用文档配置了 alembic:升级效果非常好!谢谢
    【解决方案2】:

    一个简单的解决方案是在 SQL 中输入 ALTER TABLE,然后更改表中的值。

    【讨论】:

      【解决方案3】:

      Flask-迁移

      Flask-Migrate 是一个扩展,它使用 Alembic 为 Flask 应用程序处理 SQLAlchemy 数据库迁移。数据库操作可通过 Flask 命令行界面进行。

      >>> pip install flask-migrate
      

      https://flask-migrate.readthedocs.io/en/latest/index.html

      【讨论】:

      • Flask-Migrate 需要 Flask-SQLAlchemy,而不是直接使用 SQLAlchemy。 See
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 2014-04-12
      • 2016-03-15
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多