为MySQL转义Python字符串
我用Python和MySQLdb来下载网页并把它们存储到数据库里。现在我遇到的问题是,无法把复杂的字符串保存到数据库中,因为它们没有被正确处理。
在Python中有没有什么函数可以用来处理字符串,以便能在MySQL中使用?我试过用'''
(三重单引号)和"""
,但都不行。我知道PHP有mysql_escape_string()
这个函数,Python里有没有类似的东西呢?
谢谢。
7 个回答
19
>>> import MySQLdb
>>> example = r"""I don't like "special" chars ¯\_(ツ)_/¯"""
>>> example
'I don\'t like "special" chars \xc2\xaf\\_(\xe3\x83\x84)_/\xc2\xaf'
>>> MySQLdb.escape_string(example)
'I don\\\'t like \\"special\\" chars \xc2\xaf\\\\_(\xe3\x83\x84)_/\xc2\xaf'
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
85
MySQLdb这个库其实会帮你处理这些事情,如果你使用它提供的方法来构建SQL查询字符串,而不是自己去拼凑。
不要这样做:
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)" % (val1, val2)
cursor.execute(sql)
应该这样做:
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)"
cursor.execute(sql, (val1, val2))
105
conn.escape_string()
查看MySQL C API函数的对应关系:http://mysql-python.sourceforge.net/MySQLdb.html