首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asyncpg SELECT,IN提供postgresSyntaxError

asyncpg SELECT,IN提供postgresSyntaxError
EN

Stack Overflow用户
提问于 2019-09-13 23:50:31
回答 1查看 1.3K关注 0票数 0

在使用asyncpg的python代码中,我将一个元组('PENDING',)传入where-in查询,该查询记录为:

代码语言:javascript
复制
args=('TYPE_1', ('PENDING',))

query=SELECT * FROM actions where type = $1 AND status IN $2

看起来sql查询最终应该是

代码语言:javascript
复制
SELECT * FROM actions where type = TYPE_1 AND status in ('PENDING',);

但上述代码的结果是:

代码语言:javascript
复制
asyncpg.exceptions.PostgresSyntaxError: syntax error at or near "$2"

我认为这可能是因为元组中的尾随逗号,但我不知道如何摆脱它。

EN

回答 1

Stack Overflow用户

发布于 2019-09-14 04:53:11

以防这能帮助其他人。在asyncpg中,不再支持WHERE In。正确的方法是使用ANY,因此在生成sql代码时,应该是:

代码语言:javascript
复制
WHERE type = $1 AND status = ANY($2::text[]) 

其中$2是常规的python列表。看一下args,它现在是:

代码语言:javascript
复制
('TYPE_1', ['PENDING'])
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57926778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档