You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单列SQL查询结果带括号引号异常排查求助

解决mysql.connector单列查询返回带括号引号结果的问题

别担心,这个问题其实是mysql.connector的正常行为,很容易搞定!

问题原因

不管你查询的是单列还是多列,mysql.connector的游标返回的每一行结果都是元组。当你查多列时,可能习惯用(col1, col2)的方式解构元组,直接拿到单个字段值;但查单列时,如果写法不对,就会把整个单元素元组(比如('32645845',))当成结果处理,所以才会看到带括号和逗号的输出。

你原来的循环里写for (User_id) in mycursor:,这里的括号其实没起到解构作用,相当于直接遍历元组本身,所以User_id变量拿到的是整个单元素元组。

解决方案

有两种简单的修改方式,任选其一即可:

方法1:用单元素元组解构

直接在循环里用(user_id,)的形式,明确告诉Python要解构这个单元素元组,拿到里面的具体值:

import mysql.connector
mydb = mysql.connector.connect(
 host="xxxxxxxx",
 user="xxxxxxxx",
 passwd="xxxxxxxx",
 database="vmware"
)
query_string = "select UserID FROM VM WHERE CommissionStatus='commissioned';"
mycursor = mydb.cursor()
mycursor.execute(query_string)
ReturnedUser_id = []
# 改成带逗号的单元素元组解构
for (user_id,) in mycursor:
 ReturnedUser_id.append(user_id)
 print(user_id)  # 现在输出就是纯字符串,比如32645845

方法2:通过索引获取元组的第一个元素

如果觉得解构写法有点奇怪,也可以直接遍历每一行元组,然后通过索引[0]取第一个元素:

import mysql.connector
mydb = mysql.connector.connect(
 host="xxxxxxxx",
 user="xxxxxxxx",
 passwd="xxxxxxxx",
 database="vmware"
)
query_string = "select UserID FROM VM WHERE CommissionStatus='commissioned';"
mycursor = mydb.cursor()
mycursor.execute(query_string)
ReturnedUser_id = []
for row in mycursor:
 user_id = row[0]  # 取元组的第一个元素
 ReturnedUser_id.append(user_id)
 print(user_id)

验证效果

修改后你再打印user_id的类型,会发现从原来的tuple变成了对应的字段类型(比如字符串),输出也不会再带括号和引号了。

内容的提问来源于stack exchange,提问作者ohgetout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:43:29