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
相关产品推荐
相关产品推荐

