如何使用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
相关产品推荐
相关产品推荐

