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

Python SQLite3中如何通过外键ID获取关联表对应信息?

SQLite3多表关联查询流派名称解决方案

核心实现逻辑

通过JOIN关联查询绑定Shows表与Genre表的外键关联字段GenreID,即可直接通过电影ID查询到对应的所有流派名称。一部电影对应多个流派时,查询会返回多条结果,可直接聚合为列表使用。

注意:lastrowid仅用于获取刚执行INSERT操作生成的自增主键ID,和查询场景完全无关,因此该方法无法满足你的需求。


代码实现示例

1. 两表结构(Shows表每条记录对应单个流派)

import sqlite3

# 建立数据库连接
conn = sqlite3.connect("你的数据库文件路径.db")
cursor = conn.cursor()

# 替换为你需要查询的电影ID
target_show_id = 1
# 执行参数化查询,避免SQL注入风险
cursor.execute("""
    SELECT g.GenreName 
    FROM Shows s
    INNER JOIN Genre g ON s.GenreID = g.GenreID
    WHERE s.ShowID = ?
""", (target_show_id,))

# 提取所有流派名称为列表
genre_list = [item[0] for item in cursor.fetchall()]
print(genre_list)

# 关闭资源
cursor.close()
conn.close()

2. 推荐三表结构(适配一部电影对应多个流派的多对多场景)

如果你的Shows表中GenreID存储的是多ID拼接字符串,建议调整为规范的多对多结构,新增ShowGenre中间表存储电影与流派的对应关系,字段包含ShowID、GenreID。
对应查询代码:

import sqlite3

conn = sqlite3.connect("你的数据库文件路径.db")
cursor = conn.cursor()

target_show_id = 1
cursor.execute("""
    SELECT g.GenreName 
    FROM ShowGenre sg
    INNER JOIN Genre g ON sg.GenreID = g.GenreID
    WHERE sg.ShowID = ?
""", (target_show_id,))

genre_list = [item[0] for item in cursor.fetchall()]
print(genre_list)

cursor.close()
conn.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:45:03