Maison >base de données >tutoriel mysql >Comment puis-je récupérer des dictionnaires au lieu de listes à partir de requêtes SQLite en Python ?

Comment puis-je récupérer des dictionnaires au lieu de listes à partir de requêtes SQLite en Python ?

DDD
DDDoriginal
2025-01-04 11:42:34955parcourir

How Can I Retrieve Dictionaries Instead of Lists from SQLite Queries in Python?

Récupération de dictionnaires à partir de requêtes SQLite

En Python, la récupération de données à partir d'une base de données SQLite aboutit généralement à des listes représentant les lignes d'un tableau. Bien que cela soit pratique pour accéder aux données, il peut être souhaitable d'obtenir des dictionnaires pour un accès plus structuré et basé sur des clés.

Une méthode pour y parvenir consiste à utiliser l'attribut row_factory. En le définissant sur une fonction personnalisée, vous pouvez spécifier comment les lignes doivent être traitées à partir d'un ensemble de résultats. Par exemple :

import sqlite3

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

con = sqlite3.connect("test.sqlite")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select * from table")
rows = cur.fetchall()

print(rows[0]["col1"])

Une autre solution, comme suggérée dans la documentation SQLite, consiste à utiliser le type Row optimisé comme row_factory :

con.row_factory = sqlite3.Row

cursor = con.cursor()
row = cursor.fetchone()

print(row["col1"])

Ce type Row fournit à la fois des et un accès basé sur le nom des colonnes, insensible à la casse, avec une surcharge de mémoire minimale, ce qui en fait une solution plus efficace que les approches basées sur un dictionnaire personnalisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn