Connector / Python Select语句不起作用

时间:2015-07-12 16:18:07

标签: python mysql mysql-connector-python

有人可以帮我弄清楚以下代码有什么问题。它是一个Python应用程序试图使用Connector/Python

从mysql数据库中进行选择
number = '+12345678901'
cursor.execute('SELECT * FROM channel WHERE phone_number = %s', (number))

它产生以下错误:

  

1064(42000):您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在'%s'附近使用。在第1行

当我检查mysql日志时,我看到以下内容:

  

SELECT * FROM channel WHERE phone_number =%s

这意味着它不会替换电话号码。

2 个答案:

答案 0 :(得分:6)

根据Python Database API参数,应作为序列或映射提供,(number)不是一个。

要创建单个元素元组,您需要在元素后面添加逗号。

cursor.execute('SELECT * FROM channel WHERE phone_number = %s', (number, ))

答案 1 :(得分:-2)

str.format()方法现在用于%s

    number = '+12345678901'
    cursor.execute('SELECT * FROM channel WHERE phone_number = {}').format(number))

发生在大约python2.6-ish,见https://docs.python.org/2/library/string.html?highlight=string.format#format-string-syntax