Connector/Python Select 语句无效

Connector/Python Select statement not working

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

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

它产生了以下错误:

1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1

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

SELECT * FROM channel WHERE phone_number = %s

这意味着它不会替换 phone 数字。

根据 Python Database API 参数应该 作为序列或映射提供 (number) 两者都不是。

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

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

现在使用 str.format() 方法代替 %s

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

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