我们正在尝试使用Alembic(离线模式)生成SQL Migration脚本。迁移中的部分视图使用MySQL函数DATE_FORMAT,如下例所示。创建迁移脚本时,生成的SQL中的百分比字符将加倍。
我们一直在手动修改生成的脚本,将其重新设置为单个%字符,但我希望摆脱这种做法并让我们的升级/降级生成可以通过管道传输到数据库而无需手动修改的SQL
从我能够确定的,在执行权限选项中使用no_parameters = True设置在线模式下运行Alembic迁移,“ ...百分比直接通过而不进行转义,从而提供交叉兼容操作使用DBAPI执行和静态脚本生成。“
(参见: https://alembic.readthedocs.org/en/latest/changelog.html#change-1dff9e522d76403d9af885164fd284e9)
由于execution_options被设置为Connection的属性,并且在离线模式下运行时不存在任何连接,因此这对我们来说似乎不是一个选项。
非常感谢任何帮助或建议!
=======================
def upgrade():
my_view_sql = """
CREATE VIEW my_view
AS
SELECT DATE_FORMAT(m.my_date, '%m/%d/%Y') AS 'my_date'
FROM some_table as m
"""
op.execute(my_view_sql)
======================
-- Running upgrade old_version -> new_version
CREATE VIEW my_view
AS
SELECT DATE_FORMAT(m.my_date, '%%m/%%d/%%Y') AS 'my_date'
FROM some_table as m;
UPDATE alembic_version SET version_num='new_version';