尝试将此查询与转义变量一起使用:
"UPDATE table_name SET status = ?, status_by = ? WHERE (unique_id, page_id) IN (?)", [req.body.action, req.body.status_by, aSet]
但最终得到这个错误:'操作数应该包含2列'
这就是aSet的样子: (1234567890, 123),(1234567890, 123)
(1234567890, 123),(1234567890, 123)
您不能将 ? 占位符用于整个列表,它只能替换为单个值 .
?
您需要将 aSet 的所有元素分散到单独的参数中,并在查询中为所有这些元素放置足够的 ? 占位符 .
aSet
qs = ",".join(["(?, ?)"]*len(aSet)) sql = """UPDATE table_name SET status = ?, status_by = ? WHERE (unique_id, page_id) IN (%s)"""%(qs) cur.execute(sql, [req.body.action, req.body.status_by] + list(sum(aSet, ()))
我从Transform "list of tuples" into a flat list or a matrix得到了 list(sum(aSet, ()) 表达式
list(sum(aSet, ())
1 回答
您不能将
?
占位符用于整个列表,它只能替换为单个值 .您需要将
aSet
的所有元素分散到单独的参数中,并在查询中为所有这些元素放置足够的?
占位符 .我从Transform "list of tuples" into a flat list or a matrix得到了
list(sum(aSet, ())
表达式