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

如何使用Python统计SQLite数据表中的特定值数量?

在Python中用SQLite的COUNT()函数统计特定值数量

嘿,这事儿其实没那么复杂!纯SQLite里的COUNT()用法在Python里几乎可以直接照搬,只需要结合Python自带的sqlite3库来执行查询就行。我给你一步步拆解,再配上学生性别统计的例子,一看就懂。

核心思路

本质就是用SQL的COUNT(*)配合WHERE子句过滤你要统计的特定值,然后通过Python的sqlite3库执行这条SQL语句,最后提取返回的统计结果。

完整代码示例(统计单一性别人数)

假设你有个叫students的表,里面有gender字段(值为'男'或'女'),我们来统计男生的人数:

import sqlite3

# 连接数据库(如果是本地文件数据库,把':memory:'换成你的数据库路径,比如'students.db')
with sqlite3.connect(':memory:') as conn:
    # 创建游标对象
    cursor = conn.cursor()
    
    # 模拟创建学生表并插入测试数据(实际场景中这步可跳过,你的表已存在)
    cursor.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, gender TEXT)''')
    cursor.executemany('''INSERT INTO students (name, gender) VALUES (?, ?)''',
                      [('张三', '男'), ('李四', '女'), ('王五', '男'), ('赵六', '男'), ('钱七', '女')])
    conn.commit()
    
    # 统计男生人数
    cursor.execute("SELECT COUNT(*) FROM students WHERE gender = '男'")
    male_count = cursor.fetchone()[0]  # fetchone()返回元组,取第一个元素就是统计数
    print(f"男生人数:{male_count}")
    
    # 统计女生人数同理
    cursor.execute("SELECT COUNT(*) FROM students WHERE gender = '女'")
    female_count = cursor.fetchone()[0]
    print(f"女生人数:{female_count}")

更安全的参数化查询

如果你的统计条件是动态传入的(比如从用户输入获取性别),绝对不要直接拼接SQL字符串,要用参数化查询避免SQL注入风险:

target_gender = '男'  # 这个值可以是动态获取的
cursor.execute("SELECT COUNT(*) FROM students WHERE gender = ?", (target_gender,))
count = cursor.fetchone()[0]
print(f"{target_gender}生人数:{count}")

一次性统计多个分组(男女生同时统计)

如果想一次拿到所有性别的统计结果,可以用GROUP BY语句批量分组统计:

cursor.execute("SELECT gender, COUNT(*) FROM students GROUP BY gender")
results = cursor.fetchall()
for gender, count in results:
    print(f"{gender}生人数:{count}")

几个关键注意点

  • 用with语句管理数据库连接,它会自动帮你关闭连接,避免资源泄漏
  • COUNT(*)会统计符合条件的所有行,不管字段是否为NULL;如果要统计非NULL的特定字段,可以用COUNT(gender)
  • fetchone()用于获取单个结果,fetchall()用于获取多个分组的结果行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:29