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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:01