我有一个很长的查询需要执行,我正在使用预准备语句将值插入查询。据我所知,它可以起作用,但它不起作用!
以下是代码:
cursor = connection.cursor()
rows = cursor.execute(r"""SELECT... %s.. %s.. %s...""",(val1,val2,val3,))
rows = cursor.fetchall()
rows = text_position(rows)
如果我插入一个简单的引用它会中断,如果我插入任何非英语字符也是如此。它使用双引号,因为我将语句包装在其中。有什么建议吗?
答案 0 :(得分:0)
这是调试SQL的一般技术(特别是从其他语言生成时,如Python):
停止mysql服务器(假设您运行mysqld而不记录):
sudo invoke-rc.d mysql stop
启用日志记录后运行mysqld
:
sudo mysqld --log=/tmp/myquery.log
运行你的脚本。
在/tmp/myquery.log中查找MySQLdb发送给mysqld的SQL命令。
这可能会给你足够的线索来解决问题,否则,请在Python中发布完整的SQL命令
cursor.execute(r"""SELECT... %s.. %s.. %s...""",(val1,val2,val3,))
和/tmp/myquery.log中的mysqld所见的相应SQL。
完成调试后,您可以关闭日志记录mysqld并使用以下命令重新启动它:
sudo invoke-rc.d mysql restart