gpt4 book ai didi

Sqlite 缺少 ALTER 支持,Alembic 迁移因此失败。解决方案?

转载 作者:IT王子 更新时间:2023-10-29 06:20:06 26 4
gpt4 key购买 nike

我正在为 friend 的 zumba 类(class)开发一个小型注册应用程序,使用 Flask、SQLAlchemy 和 Flask-migrate(alembic) 来处理数据库更新。我选择了 SQlite,因为该应用程序必须是自包含的,并且在没有互联网访问权限的笔记本电脑上本地运行,而且 SQLite 不需要安装服务或其他服务,这也是必须的。

处理 SQLite 缺乏对 ALTER 表的支持在初始开发期间不是问题,因为我只是销毁了数据库,并在出现问题时重新创建了数据库。但现在我的 friend 实际上正在使用我面临的问题。

在功能请求之后,必须修改表,我再次遇到可怕的“不支持 SQLite 方言中约束的 ALTER”。我预见到这个问题将来也可能会出现。

我该如何处理这个问题?在处理数据库方面,我几乎是一个新手。我读到一种处理方法是创建一个新表、创建新约束并复制数据并重命名该表,但我不知道如何在 alembic 脚本中实现它。

最佳答案

您可以在初始迁移创建的 env.py 文件中设置一个变量 (render_as_batch=True)。

context.configure(
connection=connection,
target_metadata=target_metadata,
render_as_batch=True
)

它需要 alembic > 0.7.0

这可以生成批量操作迁移,即创建一个具有约束的新表,复制现有数据,并删除旧表。参见 http://alembic.zzzcomputing.com/en/latest/batch.html#batch-mode-with-autogenerate

如果您仍然遇到问题,请注意 - sqlite 仍然存在细微差别,例如http://alembic.zzzcomputing.com/en/latest/batch.html#dropping-unnamed-or-named-foreign-key-constraints

关于Sqlite 缺少 ALTER 支持,Alembic 迁移因此失败。解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30378233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com