sqlite3 设置返回值为字典形式

版权声明:共同努力,有不足的地方欢迎大家点出 https://blog.csdn.net/qq_42897012/article/details/84191000

首先是官方的方法

# 导入驱动
import sqlite3

def dict_factory(cursor, row):
    d = {}
    for index, col in enumerate(cursor.description):
        d[col[0]] = row[index]
    return d

# 连接数据库
connect = sqlite3.connect("testsqlite.db")

# 指定工厂方法
connect.row_factory = dict_factory
cursor = connect.cursor()

cursor.execute("SELECT * FROM student")

rows = cursor.fetchall()

print(rows)

for row in rows:
    print(row)

# 提交操作
connect.commit()
# 关闭游标
cursor.close()
# 关闭数据库连接
connect.close()

另一种方法

import sqlite3
connect = sqlite3.connect("testsqlite.db")
cursor = connect.cursor()

cursor.execute("""SELECT * FROM employee;""")
employees = cursor.fetchall()
# print(employees)

# 获得列名
# print(cursor.description)
description = cursor.description  # 获得游标所在表的信息 包含列名。
column_name_list = []
for i in description:
    column_name_list.append(i[0])
# print(column_name_list)

print("-" * 50)
# 结果集拼字典
result = []
for employee in employees:
    employee_dict = {}
    for index in range(0, len(column_name_list)):
        # print(employee[index])
        employee_dict[column_name_list[index]] = employee[index]
    # print(employee_dict)
    result.append(employee_dict)
    # print(dict(zip(column_name_list, employee)))
# print(result)

# 语法糖 列表生成式
print([dict(zip(column_name_list, employee)) for employees in employees])

猜你喜欢

转载自blog.csdn.net/qq_42897012/article/details/84191000