无法将查询结果分配给 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 变量的主要内容,如果未能解决你的问题,请参考以下文章
在 azure synapse 存储过程中将表名作为参数传递时将查询结果分配给变量