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

如何使用SQL查询将SQLite3数据库数据填充到Python联系人列表中

前提说明

执行查询前需要确保SELECT语句的字段顺序和你需要的[first_name, last_name, email, phone_number, address]顺序一致,也可以配置行工厂通过字段名取值避免顺序错误。

最简实现(推荐)

cursor.fetchall()已经返回了包含所有查询行的序列,不需要单独计算行数再通过下标遍历,直接遍历结果即可生成目标列表:

import sqlite3

# 初始化数据库连接和游标
conn = sqlite3.connect("你的数据库文件路径.db")
cursor = conn.cursor()

# 执行查询,严格按照你需要的字段顺序写SELECT语句
cursor.execute("SELECT first_name, last_name, email, phone_number, address FROM 你的联系人表名")

# 直接生成目标列表,无需提前初始化contacts空列表
contacts = [list(row) for row in cursor.fetchall()]

# 用完关闭连接
cursor.close()
conn.close()

兼容你原有写法的实现

如果你要保留原来通过下标n遍历的逻辑,直接从你已经拿到的tempvar里按索引取对应字段即可:

tempvar = cursor.fetchall()
rowcount = len(tempvar)
for n in range(0, rowcount):
    a = tempvar[n][0]  # 第一个字段first_name
    b = tempvar[n][1]  # 第二个字段last_name
    c = tempvar[n][2]  # 第三个字段email
    d = tempvar[n][3]  # 第四个字段phone_number
    e = tempvar[n][4]  # 第五个字段address
    contacts.append([a, b, c, d, e])

更高可读性的实现(避免字段顺序错误)

配置sqlite3.Row作为行工厂,可直接通过字段名取值,无需记忆查询字段的顺序:

conn = sqlite3.connect("你的数据库文件路径.db")
# 配置行工厂,支持通过字段名访问值
conn.row_factory = sqlite3.Row
cursor = conn.cursor()

cursor.execute("SELECT first_name, last_name, email, phone_number, address FROM 你的联系人表名")
contacts = []
for row in cursor.fetchall():
    contacts.append([
        row["first_name"],
        row["last_name"],
        row["email"],
        row["phone_number"],
        row["address"]
    ])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:33:03