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

Python如何将MongoDB集合文档数据正确显示在Treeview组件中

故障原因

  • MongoDB查询返回的单条文档为字典结构,默认携带系统生成的_id字段,row.values()返回的字段顺序和Treeview组件预先定义的列顺序不匹配,直接传入会导致数据错位、格式异常
  • 老版本Python中字典的values()返回结果为无序状态,进一步加剧字段对应错误
  • 若文档存在嵌套结构、数组类字段,直接传入values会将整个对象原样填充到单元格,出现非预期显示效果
  • MongoDB生成的_id为ObjectId类型,未转字符串直接填充也会导致显示异常

修复代码

首先确认你初始化Treeview时columns参数定义的展示字段顺序,按相同顺序编写字段列表后取值即可:

collection = myDB['students']
rows = list(collection.find())

# 替换为你实际要展示的字段,顺序必须和Treeview定义的columns顺序完全一致
show_fields = ["name", "age", "class", "contact"]
# 如果需要显示_id字段,写成:show_fields = ["_id", "name", "age", "class", "contact"]

if rows:
    self.student_table.delete(*self.student_table.get_children())
    for row in rows:
        # 按顺序取值,缺失字段默认填充空字符串,_id字段转字符串处理
        row_values = []
        for field in show_fields:
            val = row.get(field, "")
            if field == "_id":
                val = str(val)
            row_values.append(val)
        self.student_table.insert("", END, values=row_values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:45:08