gpt4 book ai didi

python - Alembic:从脚本内的模式比较获取 SQL 输出

转载 作者:行者123 更新时间:2023-12-01 09:05:48 29 4
gpt4 key购买 nike

我想将当前的数据库架构与我当前的模型进行比较。虽然 compare_metadata 提供了所需升级操作的详细列表,但我还想打印出相关的 SQL 语句(类似于离线 alembic Upgrade head --sql 命令,但之前没有实际生成迁移脚本文件)。

from alembic.autogenerate import compare_metadata
from alembic.migration import MigrationContext
from myapp import models
from sqlalchemy import create_engine
engine = create_engine("db_url...")
diff_list = compare_metadata(
MigrationContext.configure(engine.connect()),
models.meta.metadata
)

也许可以使用product_migrations api 命令以某种方式生成 SQL 语句,该命令返回 MigrationScript 对象并用作 compare_metadata 的输入> 命令(参见 http://alembic.zzzcomputing.com/en/latest/api/autogenerate.html#customizing-revision )。谢谢。

最佳答案

我认为它不能生成 SQL 语句,因为它们可能会有所不同,具体取决于您使用的数据库引擎,但您可以为此生成 SQL Alchemy 语句:

from alembic.migration import MigrationContext
from myapp import models
from sqlalchemy import create_engine
engine = create_engine("db_url...")

mc = MigrationContext.configure(engine.connect())
diff_list = compare_metadata(mc, models.meta.metadata) # not needed for this
migrations = produce_migrations(mc, models.meta.metadata) # we need this instead
sqlalchemy_statements = render_python_code(migrations.upgrade_ops))

print sqlalchemy_statements # just to see the result

关于python - Alembic:从脚本内的模式比较获取 SQL 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52059019/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com