【发布时间】:2017-06-29 08:59:52
【问题描述】:
我想在字符串中的每个引号之前插入一个 \ 以使用 pymysql 将其插入到我的 SQL 数据库中。如果我不转义引号,我就无法在我的数据库中插入字符串。
例如:
str = "好的,我准备好了"
必须是:
str = "好的,我准备好了"
但 print str 必须是:“好的,我准备好了”
为了执行它,我已经完成了:
str = str.replace("'", "\'")
但它不起作用,我仍然无法在我的数据库中插入我的字符串。我有错误消息:
(1064, u"您的 SQL 语法有错误;请查看手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 near 的语义搜索软件可以为直观的一切提供动力 聊天机器人在第 1 行搜索“):ProgrammingError Traceback(大多数 最近通话最后):文件“/var/task/setter_organizations.py”,第 38 行, 在处理程序structured_data.insert() 文件中 “/var/task/setter_organizations.py”,第 107 行,插入 self.rds.insertItem(self.type, self.data) 文件 "/var/task/RDS/rds.py", 第 92 行,在 insertItem 中返回 self.insert(req) 文件 “/var/task/RDS/rds.py”,第 35 行,插入受影响的行 = 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(无缓冲=无缓冲) 文件“/var/task/RDS/pymysql/connections.py”,第 1057 行,在 _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”,第 107 行,在 raise_mysql_exception 中 raise errorclass(errno, errval) ProgrammingError: (1064, u"You have an SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于使用 near 语义的正确语法 搜索软件可以为从直观的聊天机器人到搜索引擎的一切提供动力 在第 1 行")
我也会打印我的字符串,但看不到 \
有人知道我该怎么做吗?
【问题讨论】:
-
“它不工作”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何它不工作?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?
-
这是因为 \ 是一个转义字符。再添加一个就可以了
-
所以基本上你想在使用 SQL 查询将其插入 SQL 数据库时转义这些字符对吗?
-
没错@code_byter
-
@JakyChane 请看我的编辑。
标签: python python-2.7 escaping