Python / Mysql:拒绝逃避字符串!

时间:2011-06-07 17:29:36

标签: python mysql escaping

我有一个很长的查询需要执行,我正在使用预准备语句将值插入查询。据我所知,它可以起作用,但它不起作用!

以下是代码:

    cursor = connection.cursor()
    rows = cursor.execute(r"""SELECT... %s.. %s.. %s...""",(val1,val2,val3,))
    rows = cursor.fetchall()
    rows = text_position(rows)

如果我插入一个简单的引用它会中断,如果我插入任何非英语字符也是如此。它使用双引号,因为我将语句包装在其中。有什么建议吗?

1 个答案:

答案 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