如何在字符串python中的引号前插入\\反斜杠

新手上路,请多包涵

我想在我的字符串中的每个引号之前插入一个 \ 以使用 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 许可协议

阅读 1k
2 个回答

这有效,但不是 OP 想要的:

 str = "ok I'm ready"
str = str.replace("'", "\\'")
print(str)

编辑:

请看看这个问题: A good way to escape quotes in a database query string?

还有另一个: Escape string Python for MySQL 他们使用:

 conn.escape_string()

编辑 2:请看这个: Python pymySQL sending a string with quotes

并注意他们如何使用占位符:

 cur.execute('UPDATE connections SET cmd=%s, client_new=1 where ip=%s', (command, ip))

原文由 hridayns 发布,翻译遵循 CC BY-SA 3.0 许可协议

您应该添加第二个 \

 your_str= your_str.replace("'", "\\'")

原文由 Carles Mitjans 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题