我有一个使用SqlAlchemy执行的原始SQL语句。该查询包含:
FROM unnest(array['sku1', 'sku2', 'sku3'])
手动构建查询,我找不到手动转义每个参数的方法。
我尝试过:
session.execute("... FROM unnest(array[:skus]) ...", {'skus': skus})
但:
ProgrammingError: (ProgrammingError) a column definition list is required for functions returning "record"
LINE 21: FROM unnest(array[('sku1', 'sku2', '...
^
答案 0 :(得分:2)
Python tuple
适用于Postgresql record
和适用于list
的{{1}}。这就是为什么在这种情况下元组无效。
但你所说的in your own answer无效:
array
或者你的意思是
select unnest(['BA007EWCBD43', "KA036'AGHF550", 'KA036ACBK873']);
ERROR: syntax error at or near "["
LINE 1: select unnest(['BA007EWCBD43', "KA036'AGHF550", 'KA036ACBK87...
绝不应手动转义参数。让它给司机。
答案 1 :(得分:0)
好的,如果我放了list
skus(不是tuple
),一切都很好:
session.execute("... FROM unnest(:skus) ...", {'skus': ['BA007EWCBD43', 'KA036\'AGHF550', 'KA036ACBK873']})
生成:
FROM unnest(['BA007EWCBD43', "KA036'AGHF550", 'KA036ACBK873'])
虽然其他情况仍然需要手动引用参数的功能。