如何在Python-mysql.connector中屏蔽表头输出?类似MySQL -N/-ss效果
解决mysql.connector查询结果转自定义字典的方法
假设你的查询语句是类似 SELECT j, j_p FROM your_table; 这类返回两列的语句,要把结果转成以j的值为键、j_p的值为值的字典,直接遍历查询结果集即可,无需额外设置屏蔽表头的参数(结果集里的每一行本来就是对应数据,表头只是字典的键而已)。
示例代码:
import mysql.connector from mysql.connector import Error def get_custom_dict(): target_dict = {} try: # 建立数据库连接 connection = mysql.connector.connect( host='your_host', database='your_db', user='your_user', password='your_password' ) if connection.is_connected(): cursor = connection.cursor(dictionary=True) # 返回字典格式的结果 query = "SELECT j, j_p FROM your_table;" cursor.execute(query) # 遍历结果组装目标字典 for row in cursor.fetchall(): target_dict[row['j']] = row['j_p'] print(target_dict) # 输出类似 {'apple': Decimal('10.20')} 的格式 except Error as e: print(f"数据库操作出错: {e}") finally: # 关闭连接 if connection.is_connected(): cursor.close() connection.close() get_custom_dict()
关键点说明
- 使用
cursor(dictionary=True)让查询结果以字典形式返回,每一行的键就是列名j和j_p。 - 遍历
fetchall()返回的结果列表,直接提取每行的j和j_p值组装成目标字典即可。 - 不需要额外模拟
-N或-ss参数,因为我们只需要数据值本身,直接提取对应字段就行。
如果查询结果存在重复的j值,后面的行会覆盖前面的记录,若要保留所有重复键对应的值,可以改成将值存入列表:
for row in cursor.fetchall(): if row['j'] not in target_dict: target_dict[row['j']] = [] target_dict[row['j']].append(row['j_p'])
内容的提问来源于stack exchange,提问作者J C
相关产品推荐
相关产品推荐

