Python/Mysql:拒绝转义字符串!
我需要执行一个很长的查询,并且我正在使用准备好的语句将值插入到查询中。据我所知,它应该有效,但它不起作用!
这是代码:
cursor = connection.cursor()
rows = cursor.execute(r"""SELECT... %s.. %s.. %s...""",(val1,val2,val3,))
rows = cursor.fetchall()
rows = text_position(rows)
如果我插入一个简单的引号,它就会中断,如果我插入任何非英语字符,也会发生同样的情况。它与双引号一起使用,因为我将语句括在其中。有什么建议吗?
I have a pretty long query i need to execute, and i'm using prepared statements to insert the values to the query. As far as i know, it's suppose to work, but it's not working!
Here's the code:
cursor = connection.cursor()
rows = cursor.execute(r"""SELECT... %s.. %s.. %s...""",(val1,val2,val3,))
rows = cursor.fetchall()
rows = text_position(rows)
If i insert a simple-quote it breaks, and same thing if i insert any non-english characters. It works with double-quotes as i wrapped the statement in them. Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是调试 SQL 的通用技术(尤其是从另一种语言(例如 Python)生成时):
停止 mysql 服务器(假设您在没有日志记录的情况下运行 mysqld):
在打开日志记录的情况下运行 mysqld:
运行脚本。
在 /tmp/myquery.log 中查找 MySQLdb 发送到 mysqld 的 SQL 命令。
这可能会给你足够的线索来解决问题,否则,请发布Python中的完整SQL命令
以及mysqld在/tmp/myquery.log中看到的相应SQL。
完成调试后,您可以关闭日志记录 mysqld 并重新启动它:
This is a general technique for debugging SQL (especially when generated from another language, like Python):
Stop the mysql server (assuming you run mysqld without logging):
Run
mysqld
with logging turned on:Run your script.
Look in /tmp/myquery.log for the SQL command that MySQLdb sent to mysqld.
This might give you enough of a clue to solve the problem, otherwise, please post the complete SQL command in Python
and the corresponding SQL as seen by mysqld in /tmp/myquery.log.
Once you are done debugging, you can shutdown the logging mysqld and restart it with: