我想在我的字符串中的每个引号之前插入一个 \ 以使用 pymysql 将它插入到我的 SQL 数据库中。如果我不转义引号,我就不能在我的数据库中插入字符串。
举个例子:
str = “好的,我准备好了”
一定是 :
str = “好的,我准备好了”
但 print str 必须是:“好的,我准备好了”
为了执行它,我做了:
str = str.replace("'", "\'")
但它不起作用,我仍然无法将我的字符串插入我的数据库中。我有错误信息:
(1064, u“你的 SQL 语法有错误;检查对应于你的 MySQL 服务器版本的手册,了解正确的语法以使用 near 的语义搜索软件可以支持从直观的聊天机器人到第 1 行的 searc 的一切”) :ProgrammingError Traceback(最近调用最后一次):文件“/var/task/setter_organizations.py”,第 38 行,在处理程序 structured_data.insert() 文件“/var/task/setter_organizations.py”,第 107 行,在插入自我.rds.insertItem(self.type, self.data) File “/var/task/RDS/rds.py”, line 92, in insertItem return self.insert(req) File “/var/task/RDS/rds. py”,第 35 行,在插入 affected_rows = self.cursor.execute(request) 文件“/var/task/RDS/pymysql/cursors.py”,第 166 行,在执行结果 = self._query(query) 文件“/ var/task/RDS/pymysql/cursors.py”,第 322 行,在 _query conn.query(q) 文件“/var/task/RDS/pymysql/connections.py”,第 856 行,在查询 self._affected_rows = self ._read_query_result(unbuffered=unbuffered) 文件“/var/task/RDS/pymysql/connections.py”,第 1 行057,在 _read_query_result result.read() 文件“/var/task/RDS/pymysql/connections.py”,第 1340 行,在读取 first_packet = self.connection._read_packet() 文件“/var/task/RDS/pymysql/ connections.py”,第 1014 行,在 _read_packet packet.check_error() 文件“/var/task/RDS/pymysql/connections.py”,第 393 行,在 check_error err.raise_mysql_exception(self._data) 文件“/var/task /RDS/pymysql/err.py”, line 107, in raise_mysql_exception raise errorclass(errno, errval) ProgrammingError: (1064, u”你的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解要使用的正确语法 near 的语义搜索软件可以为从直观的聊天机器人到第 1 行的 searc 的一切提供支持”)
我也会打印我的字符串,但看不到
有谁知道我该怎么办?
原文由 Jaky Chane 发布,翻译遵循 CC BY-SA 4.0 许可协议
这有效,但不是 OP 想要的:
编辑:
请看看这个问题: A good way to escape quotes in a database query string?
还有另一个: Escape string Python for MySQL 他们使用:
编辑 2:请看这个: Python pymySQL sending a string with quotes
并注意他们如何使用占位符: