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

使用aiogram2+sqlite3开发Telegram机器人:用户统计数显示为0

解决Telegram机器人用户统计显示0的问题

核心问题及修复步骤

1. 未执行统计函数调用

在stats异步函数中,你只是引用了函数对象,没有触发执行,导致获取的不是统计结果:

# 错误写法
people = db.count_people
# 正确写法
people = db.count_people()

2. SQL语句参数错误

你的SQL查询中存在两个问题:

  • COUNT('user_id')里的单引号会把user_id识别为字符串常量,而非列名
  • 表名'users'用单引号包裹,SQLite会将其视为字符串而非表名

修正后的SQL语句:

SELECT COUNT(user_id) FROM users

如果列名/表名包含特殊字符,可改用反引号包裹:

SELECT COUNT(`user_id`) FROM `users`

3. 完善统计函数的返回逻辑

补充默认返回0的逻辑,避免表为空时返回None:

def count_people(self):
    with self.connection:
        result = self.cursor.execute("SELECT COUNT(user_id) FROM users").fetchone()
        return result[0] if result else 0

额外验证点

  • 手动执行SELECT * FROM users;确认表中存在用户数据
  • 检查数据库连接对象db.connection是否指向正确的数据库文件
  • 验证用户注册逻辑,确保新用户数据正常写入users表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:05:56