1

我们正在尝试使用 Alembic(离线模式)生成 SQL 迁移脚本。迁移中的部分视图使用 MySQL 函数 DATE_FORMAT,如下例所示。创建迁移脚本时,百分比字符在生成的 SQL 中加倍。

我们一直在手动修改生成的脚本以将其设置回单个 % 字符,但希望摆脱这种做法,让我们的升级/降级生成可以在不手动修改的情况下通过管道传输到数据库的 SQL。

据我所知,使用 no_parameters = True 在 execution_options 中设置的在线模式运行 Alembic 迁移允许,“ ...百分号直接通过而不转义,从而提供与 DBAPI 执行和静态脚本的交叉兼容操作一代。

见: https ://alembic.readthedocs.org/en/latest/changelog.html#change-1dff9e522d76403d9af885164fd284e9 )

由于 execution_options 被设置为 Connection 的一个属性,并且在离线模式下运行时不存在任何连接,这对我们来说似乎不是一个选项。

任何帮助或建议将不胜感激!

========================

Alembic 迁移文件:

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)

=======================

生成的 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';
4

1 回答 1

0

inline_literal听起来像你想要的东西。

于 2013-10-01T12:02:01.393 回答