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

为何能打印数据库行数却无法填充至Tkinter Entry?求提示

问题分析与解决提示

嘿,这是使用数据库游标时很容易踩的一个小坑!

问题根源

当你调用cursor.fetchall()时,游标会一次性取出查询结果集中的所有数据,并且游标指针会移动到结果集的末尾。这意味着第二次调用cursor.fetchall()时,已经没有剩余的数据可以获取了,返回的是空列表,所以len(cursor.fetchall())自然就是0。

两种解决办法

1. 存储结果集复用(最稳妥)

把第一次fetchall()的结果存到一个变量里,之后无论是打印还是给Entry组件赋值,都用这个变量:

cursor.execute('SELECT * FROM contacts;')
rows = cursor.fetchall()  # 把结果存到变量中
print('row in table contacts:', len(rows))  # 输出104
self.no_count.set(len(rows))  # 现在就能正确设置为104了

2. 使用游标rowcount属性(按需选择)

如果你不需要实际获取数据,只是想知道行数,可以直接用cursor.rowcount(不过要注意:部分数据库驱动在执行SELECT语句后,rowcount可能返回-1,这时候还是第一种方法更可靠):

cursor.execute('SELECT * FROM contacts;')
print('row in table contacts:', cursor.rowcount)
self.no_count.set(cursor.rowcount)

这样就能解决你遇到的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:12:44