任何使用过旧代码库的人都熟悉这个问题: versions文件夹中的迁移数量变得无法控制。您的应用程序现在使用的数据库看起来与它最初使用的数据库完全不同。或者,也许更常见的情况是,引入了迁移,这些迁移可能适用于即时更新,但不知何故,它们破坏了从头到尾恢复/重放迁移的能力。在这两种情况下,挤压迁移以模拟重新开始是很好的。
我一直在努力寻找一个完整的例子,说明如何使用SQLalchemy和Alembic来压缩Flask应用程序的迁移。我找到的最接近的东西是https://alembic.sqlalchemy.org/en/latest/cookbook.html
# inside of a "create the database" script, first create
# tables:
my_metadata.create_all(engine)
# then, load the Alembic configuration and generate the
# version table, "stamping" it with the most recent rev:
from alembic.config import Config
from alembic import command
alembic_cfg = Config("/path/to/yourapp/alembic.ini")
command.stamp(alembic_cfg, "head")然而,这种简洁的解释并没有解释my_metadata的来源,我也不清楚alembic.ini应该包含什么才能完成这项任务。有没有人知道这个任务的完整示例?
发布于 2019-10-30 00:47:17
示例中的my_metadata只是对声明性API (https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/api.html)中的Base的引用
示例导入:
from yourapplication.models import Base
my_metadata = Base.metadata您的数据库中的所有模型都可以通过其元数据获得,只要您将所有模型导入到您的Base所在的位置。在那之后遵循食谱指南,它应该可以工作™
https://stackoverflow.com/questions/58490285
复制相似问题