python - 我怎样才能为 sql 查询转义这个字符串?
问题描述
尝试将此查询与转义变量一起使用:
"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, ()))
我从将“元组列表”转换为平面列表或矩阵中list(sum(aSet, ())
得到了这个表达式
推荐阅读
- python - 如何使用 python web 抓取提取数据组件属性
- python - 为什么 f-strings 在其他 f-strings 内的理解中不起作用?
- python - 数据清理是否应该全部在一个 Jupyter 笔记本单元中完成?
- algorithm - 用于连接没有交叉点的 2D 多边形的算法
- python - 我对如何在“其他”部分添加值感到困惑
- c++ - 如何理解 C++ 代码中的 [=]?
- spring - 应用程序应该发送电子邮件但抛出异常,显然问题出在属性中
- javascript - 赛普拉斯测试失败并出现 RangeError
- php - MySQL查询不检索不同的值
- python - 复制或替换数据框中不同列的行的单元格中的部分列和行值