【发布时间】:2017-11-11 06:02:35
【问题描述】:
当我尝试执行这个简单的请求时遇到了一个问题:
params['_filter_items'] = (12345)
sql = """ SELECT * FROM items
WHERE items.items IN %(_filter_items)s"""
# session is a db session of sqlAlchemy
query = session.execute(sql % params)
它会生成:
SELECT * FROM items
WHERE items.items IN 12345
没有 () 当我有不止一件物品时,没关系; 我可以触摸请求;但我想知道是否有其他方法可以解决它。
【问题讨论】:
-
12345应该是字符串还是整数? -
还有
(12345)和12345一样,括号是多余的,如果你想生成单元素元组你应该写(12345,)(加逗号) -
整型是表的主键
-
最后:您应该避免使用
%插入参数,将它们作为参数传递给execute,如session.execute(sql, params) -
谢谢我已经尝试过了,但它在 PosgreSQL 中不起作用。 items.item_id IN (142661089,) ProgrammingError: (psycopg2.ProgrammingError) 语法错误在“)”处或附近,完全用逗号表示
标签: python sqlalchemy pyramid