尝试将此查询与转义变量一起使用:
"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)
最佳答案
您不能在整个列表中使用?
占位符,只能将其替换为单个值。
您需要将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, ())
表达式关于python - 我如何转义此字符串以进行SQL查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53689308/