在mysql/python中转义整个字符串
我正在写一个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]))
上面的例子会被转义,而下面的则不会。