无法将查询结果分配给 python 变量

Posted

技术标签:

【中文标题】无法将查询结果分配给 python 变量【英文标题】:Can´t assign query result to a python variable 【发布时间】:2018-11-21 03:16:59 【问题描述】:

我有这个问题:

import mysql.connector
cnx = mysql.connector.connect(user='root', password='xxx',
                              host='127.0.0.1',
                              database='xxxx')
cursor = cnx.cursor()
query = ("SELECT app_id FROM op_ids")
cursor.execute(query)
LATCH_APP_ID=cursor.fetchall()


cursor.close()
cnx.close()

数据库上app_id的值为ybDWvzU4iijnqqX8xAxx,但是当我运行python脚本时,它返回[(u'ybDWvzU4iijnqqX8xAxx',)],所以我可以'不要在其他方法中使用它,因为我收到以下错误:

TypeError: cannot concatenate 'str' and 'list' objects

如果使用这样的变量:

LATCH_APP_ID = "ybDWvzU4iijnqqX8xAxx"

脚本运行正常

有人可以帮我吗?

【问题讨论】:

这个值[(u'ybDWvzU4iijnqqX8xAxx',)] 似乎是一个列表,其中一个条目是一个元组,这就是为什么你会收到关于连接字符串和列表的错误。尝试使用LATCH_APP_ID[0] 甚至LATCH_APP_ID[0][0](如果我的猜测是正确的,这应该可以工作)。 【参考方案1】:

看来cursor.fetchall()已经返回了:

[(u'ybDWvzU4iijnqqX8xAxx',)]

所以你只需要从结构中的 with 中提取字符串:

result = cursor.fetchall()

t = result[0]        # fetch the tuple from the first item in the list

LATCH_APP_ID = t[0]  # fetch the string from the first (only) item in the tuple

【讨论】:

以上是关于无法将查询结果分配给 python 变量的主要内容,如果未能解决你的问题,请参考以下文章

将查询结果分配给forms6i中的变量

无法将 CTE 结果分配给 varchar 变量?

在 azure synapse 存储过程中将表名作为参数传递时将查询结果分配给变量

为啥我无法将程序中找到的布尔结果的正确值分配给布尔变量并使用结果检查条件?

如何在不使用游标的情况下一次将查询结果分配给多个变量?

axios GET 请求有效,但无法将结果内容分配给变量