有人可以帮我弄清楚以下代码有什么问题。它是一个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
这意味着它不会替换电话号码。
答案 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