1

有人可以帮我弄清楚以下代码有什么问题。这是一个 Python 应用程序,它试图使用Connector/Python从 mysql 数据库中进行选择

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

它产生以下错误:

1064 (42000): 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '%s' 附近使用正确的语法

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

SELECT * FROM channel WHERE phone_number = %s

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

4

2 回答 2

8

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

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

cursor.execute('SELECT * FROM channel WHERE phone_number = %s', (number, ))
于 2015-07-12T16:21:28.407 回答
-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

于 2016-04-13T13:19:36.127 回答