python - 使用 sqlalchemy/alembic 为现有数据库创建“零状态”迁移,并为该现有数据库“伪造”零迁移
问题描述
我想将 alembic 添加到现有的 sqlalchemy 项目中,并使用工作生产数据库。我找不到执行“零”迁移的标准方法==像现在一样设置数据库的迁移(对于设置环境的新开发人员)
目前,我已将声明性基类和所有使用它的模型添加到 env.py 中,但第一次alembic -c alembic.dev.ini revision --autogenerate
确实创建了现有表。
而且我需要在现有安装上“伪造”迁移 - 使用代码。对于 django ORM,我知道如何完成这项工作,但我找不到使用 sqlalchemy/alembic 执行此操作的正确方法
解决方案
alembic revision --autogenerate
检查已连接数据库的状态和目标的状态,metadata
然后创建一个迁移,使其database
符合metadata
.
如果您要引入alembic/sqlalchemy
现有数据库,并且您想要一个迁移文件,该文件给定一个空的、新的数据库将重现当前状态 - 请按照以下步骤操作。
确保您
metadata
真正符合您的当前database
(即确保运行alembic revision --autogenerate
创建一个零操作的迁移)。创建一个
temp_db
空的新的并将您sqlalchemy.url
指向alembic.ini
这个新的temp_db.
运行
alembic revision --autogenerate
。这将创建您所需的批量迁移,从而使新数据库与当前数据库保持一致。删除
temp_db
并重新指向sqlalchemy.url
您现有的数据库。运行
alembic stamp head
。这告诉 sqlalchemy 当前的迁移代表了数据库的状态——所以下次你运行alembic upgrade head
它将从这个迁移开始。
推荐阅读
- python - 如何在 Matplotlib 中为 hist2d 使用对数刻度和日志箱?
- javascript - 如何在量角器(js)中将多个字符串写入文件
- python - 如何使用 levenshtein 函数在 pandas 中删除相似的值
- java - 如何在参数是复合表达式的 Java 代码中找到方法的用法?
- python - TKinter 按钮图像未显示
- angular - 角材料最大长度验证
- c++ - C语言中的Windows UIAutomatin
- wordpress - Wordpress:过期标题不起作用
- django - 在 Django 中输入错误密码时,多个对象返回异常
- android-studio - 无法编译您的应用程序,因为无法建立其依赖关系