在使用asyncpg的python代码中,我将一个元组('PENDING',)传入where-in查询,该查询记录为:
args=('TYPE_1', ('PENDING',))
query=SELECT * FROM actions where type = $1 AND status IN $2看起来sql查询最终应该是
SELECT * FROM actions where type = TYPE_1 AND status in ('PENDING',);但上述代码的结果是:
asyncpg.exceptions.PostgresSyntaxError: syntax error at or near "$2"我认为这可能是因为元组中的尾随逗号,但我不知道如何摆脱它。
发布于 2019-09-14 04:53:11
以防这能帮助其他人。在asyncpg中,不再支持WHERE In。正确的方法是使用ANY,因此在生成sql代码时,应该是:
WHERE type = $1 AND status = ANY($2::text[]) 其中$2是常规的python列表。看一下args,它现在是:
('TYPE_1', ['PENDING'])https://stackoverflow.com/questions/57926778
复制相似问题