MySQL的转义字符串Python

2024-04-19 19:13:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python和MySQLdb下载网页并将它们存储到数据库中。我遇到的问题是无法将复杂字符串保存到数据库中,因为它们没有正确转义。

Python中是否有一个函数可以用来转义MySQL的字符串?我试过用'''(三重简单引号)和""",但没有成功。我知道PHP有mysql_escape_string(),Python中有类似的东西吗?

谢谢。


Tags: 函数字符串数据库网页stringmysql引号php
3条回答
conn.escape_string()

参见MySQL C API函数映射:http://mysql-python.sourceforge.net/MySQLdb.html

如果您使用MySQLdb库的实现来构建SQL查询字符串,而不是试图构建自己的查询字符串,那么MySQLdb库实际上会为您这样做。

不要这样做:

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))
>>> 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'

相关问题 更多 >