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

如何在Python的SQLite3中统计各语言电影参演演员数并返回JSON

没问题,这就帮你实现这个需求!我们可以分两步来完成:先写出正确的SQL查询语句关联三张表统计数据,再用Python的sqlite3和json模块把结果转换成你要的JSON格式。

步骤1:编写SQL查询语句

首先得关联film_actor、film和language三张表,通过language_id关联电影的语言信息,然后按语言名称分组,统计每个语言下独特的演员ID数量(用DISTINCT避免重复统计同一演员):

SELECT l.name AS language_name, COUNT(DISTINCT fa.actor_id) AS actor_count
FROM film_actor fa
JOIN film f ON fa.film_id = f.film_id
JOIN language l ON f.language_id = l.language_id
GROUP BY l.name;

这个查询的逻辑很清晰:

  • 从film_actor表(简称fa)拿到演员和电影的关联关系
  • 通过film_id关联到film表(简称f),获取电影对应的语言ID
  • 再通过language_id关联到language表(简称l),拿到语言的名称
  • 最后按语言名称分组,统计每组里不重复的演员ID数量

步骤2:Python代码实现

接下来用Python连接SQLite数据库,执行上面的查询,把结果转换成指定的JSON格式:

import sqlite3
import json

def get_actor_count_by_language(db_path):
    # 连接SQLite数据库
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()
    
    # 执行查询语句
    query = """
    SELECT l.name AS language_name, COUNT(DISTINCT fa.actor_id) AS actor_count
    FROM film_actor fa
    JOIN film f ON fa.film_id = f.film_id
    JOIN language l ON f.language_id = l.language_id
    GROUP BY l.name;
    """
    cursor.execute(query)
    
    # 把查询结果转换成字典
    result_dict = {row[0]: row[1] for row in cursor.fetchall()}
    
    # 关闭连接
    cursor.close()
    conn.close()
    
    # 转成JSON字符串返回(如果需要字典的话直接返回result_dict即可)
    return json.dumps(result_dict, indent=4)

# 调用示例,替换成你的数据库路径
if __name__ == "__main__":
    json_result = get_actor_count_by_language("your_database.db")
    print(json_result)

说明

  • 如果你不需要JSON字符串,而是直接要Python字典,那直接返回result_dict就行,不用调用json.dumps()
  • 记得把your_database.db替换成你实际的SQLite数据库文件路径
  • COUNT(DISTINCT fa.actor_id)是关键,确保同一个演员即使参演多部同语言电影也只被统计一次

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:36:59