在mysql/python中转义整个字符串

0 投票
2 回答
604 浏览
提问于 2025-04-17 12:33

我正在写一个Python脚本,用来更新MySQL表格中的值。遇到一个小问题,就是我发现要更新的某个值里面有一个单引号“'”。

这是我正在使用的Python代码片段,

    cur3.execute("UPDATE recon SET Name = '%s' WHERE id = '%s'" % (row[1], row[0]))

这段代码运行得很好,直到我遇到一个名字是这样的,

John's Computer

我尝试过这样做,

   cur3.execute("UPDATE recon SET Name = \'%s\' WHERE id = '%s'" % (row[1], row[0]))

但是这似乎也没有效果。有没有什么办法可以完全处理row[1]里面的内容?

2 个回答

3

不要用字符串格式化来构建SQL查询。如果你在使用mysqldb这个库,下面的写法:

cur3.execute("UPDATE recon SET Name = '%s' WHERE id = '%s'", (row[1], row[0]))

就是你需要的。注意,你在调用.execute()的时候,第二个参数是一个元组,而不是用%运算符来进行字符串格式化。

1

你应该这样做:

cur3.execute("UPDATE recon SET Name = %s WHERE id = %s", (row[1], row[0]))

这和下面的做法差别很大:

cur3.execute("UPDATE recon SET Name = '%s' WHERE id = '%s'" % (row[1], row[0]))

上面的例子会被转义,而下面的则不会。

撰写回答