作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 yoyo 迁移来修改数据库架构。我想应用/回滚到 Postgre DB,而不是迁移文件夹中的所有“迁移”,而只是我选择的那些“迁移”。
比如我有001.test.py和002.test.py,我只想申请/回滚002.test.py,我该怎么做?特别是如何在 python 代码中而不是在 shell 中执行这些操作?
Yoyo 的手册仅给出了一次执行所有迁移的示例:
from yoyo import read_migrations, get_backend
backend = get_backend('postgres://postgres:postgres@localhost/db_test')
migrations = read_migrations('/home/dfialkovskiy/dev/migrations')
backend.apply_migrations(backend.to_apply(migrations))
backend.rollback_migrations(migrations)
我想我需要这样的东西来选择要应用的迁移脚本:
backend.apply_migrations(backend.to_apply(migrations[1]))
backend.rollback_migrations(migrations[0])
(这个例子显然不行)
最佳答案
这实际上是溜溜球迁移的一个真正问题我遇到了同样的问题但我用下面给出的代码克服了这个问题,这解决了回滚或应用特定迁移。此示例仅用于应用迁移,但它可以以类似的方式应用于回滚。
backend = get_backend('postgres://postgres:postgres@localhost/db_test')
migrations = read_migrations('/home/dfialkovskiy/dev/migrations')
migrations_to_apply = backend.to_apply(migrations)
for pending_migration in migrations_to_apply:
if pending_migration.id == os.path.splitext(sys.argv[1])[0].split('/')[-1]:
backend.apply_one(pending_migration)
关于postgresql - yoyo migrations 将选定的迁移应用到 postgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44630641/
我是一名优秀的程序员,十分优秀!