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

SQLite中SELECT语句仅返回单列?如何修复以返回指定三列

问题原因与解决方案

你的问题出在**conn.row_factory = lambda cursor, row: row[0]**这一行——这个设置强制让每一行结果只返回第一个字段(也就是Artists.artist),自然就丢掉了后面的歌曲名和播放量数据。

要获取包含三列数据的嵌套列表,只需要调整这行row_factory的设置,或者直接移除它就行。

修改后的代码方案一(推荐)

直接移除row_factory的赋值,使用SQLite默认的行处理逻辑:

import sqlite3

conn = sqlite3.connect('utube.db')
# 删掉这行强制取第一个元素的设置
c = conn.cursor()
c.execute("""Select Artists.artist, Songs.Song ,Songs.views FROM Songs INNER JOIN Artists ON Artists.Artist_Id = Songs.Artist_Id """)
allsong = c.fetchall()
print(allsong)
conn.commit()
conn.close()

修改后的代码方案二(保留row_factory但调整逻辑)

如果你有特殊需求需要保留row_factory,可以把它改成返回整行:

import sqlite3

conn = sqlite3.connect('utube.db')
# 改成返回完整的行数据,而不是只取第一个元素
conn.row_factory = lambda cursor, row: row
c = conn.cursor()
c.execute("""Select Artists.artist, Songs.Song ,Songs.views FROM Songs INNER JOIN Artists ON Artists.Artist_Id = Songs.Artist_Id """)
allsong = c.fetchall()
print(allsong)
conn.commit()
conn.close()

这样运行后,你就能得到类似[['Blackpink','具体歌曲名',播放量],['Blackpink','另一首歌',播放量],...]的嵌套列表结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:21