我正在使用Flask,SQLAlchemy和Flask-migrate(alembic)为朋友zumba类开发一个小型注册应用程序,以处理数据库更新。我选择了SQlite,因为该应用程序必须是自包含的,并且必须在没有Internet访问的笔记本电脑上本地运行,并且SQLite不需要安装服务或其他,这也是必须的。
在最初的开发过程中,处理SQLite缺少ALTER表支持的问题就不成问题,因为我只是销毁了该问题,并在出现问题时重新创建了DB。但是现在我的朋友实际上正在使用该应用程序,所以我遇到了一个问题。
根据功能请求,必须修改表,然后再次出现令人恐惧的“ SQLite方言不支持ALTER约束”。我预见到将来也会出现此问题。
我该如何处理?在处理数据库方面,我几乎是一个新手。我读过一种解决方法,就是创建一个新表,创建新约束,复制数据并重命名该表,但是我不知道如何在Alembic脚本中实现它。
您可以render_as_batch=True
在通过初始迁移创建的env.py文件中设置变量()。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句