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

使用MySQL Connector将MySQL表数据保存为Python字典的问题

解决MySQL查询结果仅最后一行存入字典的问题

你遇到的问题很典型——每次循环都直接替换了整个字典,而不是往里面添加新的键值对。咱们一步步来修正:

问题根源

你的循环里写了f = {row["JT"]: row ["f"]},这意味着每遍历一行数据,就会创建一个全新的字典赋值给f,之前存的内容都会被覆盖,最后自然只剩最后一行的数据啦。

修正方案

要把每一行的键值对添加到同一个字典中,有两种简单的方式:

方式1:直接通过键赋值

直接用f[row["JT"]] = row["f"],这样每次循环都会把当前行的JT作为键,f字段的值作为值,添加到已有的字典f里:

方式2:使用字典的update()方法

调用f.update({row["JT"]: row["f"]}),同样可以把新的键值对合并到字典中。

还要修正的语法错误

除了字典赋值的问题,你的代码还有两处语法错误:

  1. SQL语句中表名用了单引号'test',MySQL里表名应该用反引号`test`(或者如果表名没有特殊字符,直接写test也行),单引号是用来包裹字符串常量的,用在表名上会导致SQL执行失败。
  2. Python3中print f是过时的写法,需要改成print(f)。

完整修正后的代码

import mysql.connector

# 建立数据库连接
conn = mysql.connector.connect(user="F", password="", host="localhost", db="f")
# 使用dictionary=True让查询结果返回字典格式
mycursor = conn.cursor(dictionary=True)

# 修正表名的引号问题
query = "SELECT * FROM `test`"
mycursor.execute(query)

# 初始化空字典
f = {}

# 遍历查询结果,逐个添加键值对
for row in mycursor:
    # 方式1:直接键赋值(推荐,更直观)
    f[row["JT"]] = row["f"]
    # 方式2:用update的话可以替换成下面这行
    # f.update({row["JT"]: row["f"]})
    print(f)  # 现在每次打印都会看到字典在逐步添加内容

# 别忘了关闭游标和连接(好习惯)
mycursor.close()
conn.close()

这样修改后,所有行的JT和f字段的键值对都会被存入同一个字典f中啦。如果JT字段有重复值,后面的行会覆盖前面的,这点需要注意哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:31:26