【发布时间】:2021-11-27 21:31:04
【问题描述】:
我有一个使用 SQLAlchemy 进行数据库访问的现有应用程序。效果很好。
现在我想介绍数据库迁移,我读到 alembic 是推荐的方式。基本上我想从“当前数据库状态”(不是空数据库!)作为修订 0 开始,然后跟踪进一步的修订。
所以我安装了alembic(1.7.3版)并放了
from my_project.db_tables import Base
target_metadata = Base.metadata
进入我的env.py。 Base 只是我项目中的标准 SQLAlchemy Base = sqlalchemy.ext.declarative.declarative_base()(同样,它工作正常)。
然后我运行alembic revision --autogenerate -m "revision0",期望看到一个upgrade() 方法,它可以让我从一个空数据库进入当前数据库状态。或者可能是一个空的upgrade(),因为这是第一次修订,我不知道。
相反,upgrade() 方法充满了op.drop_index 和op.drop_table 调用,而downgrade() 则全部是op.create_index 和op.create_table。基本上和我的预期相反。
知道有什么问题吗? 从现有数据库状态“初始化”迁移的推荐方法是什么?
【问题讨论】:
-
@GordThompson 谢谢。第一个链接不相关(我不使用大写)。第二个链接可能是——显然,即使第一步也失败了:
alembic revision --autogenerate创建了一个巨大的文件,如 OP 中所述。但仍然不确定该怎么做。
标签: python-3.x sqlalchemy alembic