从python和MySQLdb中的Json对象获取字符串

从python和MySQLdb中的Json对象获取字符串,python,mysql,json,api,mysql-python,Python,Mysql,Json,Api,Mysql Python,我正在运行一个脚本,该脚本对数据库执行一些查询。这些查询由来自GroupMe API的Json包中的字符串组成。这就是我得到的错误: x.execute("""SELECT url FROM BIN WHERE name=%s""",(str(messageData['text'].lower()))) File "/home/User2/.local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute

我正在运行一个脚本,该脚本对数据库执行一些查询。这些查询由来自GroupMe API的Json包中的字符串组成。这就是我得到的错误:

x.execute("""SELECT url FROM BIN WHERE name=%s""",(str(messageData['text'].lower())))
  File "/home/User2/.local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: not all arguments converted during string formatting

该程序是一个GroupMe机器人,当消息中提到gif时,它会打印gif链接。因此,如果我发送消息“ohNo.gif”,机器人会在数据库中查找与“ohNo.gif”相关的imgur链接,然后打印出来。显然,我的字符串转换有问题。

查询参数必须以元组形式传递(注意逗号):

(str(messageData['text'].lower())
不是元组类型-它是字符串:

>>> params = ('test')
>>> type(params)
<type 'str'>
>>> params = ('test', )
>>> type(params)            
<type 'tuple'>
>参数=('test')
>>>类型(参数)
>>>参数=('test',)
>>>类型(参数)
此外,您不需要使用三重引号并调用
str()

另见:


希望能有所帮助。

这不是很漂亮吗?一个逗号就解决了它。非常感谢。请解释一下“在元组中传递”是什么意思?这实际上是一个很常见的问题,请参阅和(请参阅“一些示例”部分)。
>>> params = ('test')
>>> type(params)
<type 'str'>
>>> params = ('test', )
>>> type(params)            
<type 'tuple'>