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
Libérer: 2025-01-04 11:42:34
original
960 Les gens l'ont consulté

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"])
Copier après la connexion

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"])
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal