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

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

Susan Sarandon
Libérer: 2025-01-03 20:33:40
original
178 Les gens l'ont consulté

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

Récupérer des dictionnaires à partir de requêtes SQLite

La récupération de données à partir d'une base de données SQLite aboutit généralement à une liste de listes, où chaque liste interne correspond à un ligne dans la base de données. Bien que cette méthode soit fonctionnelle, elle peut s'avérer peu pratique pour accéder aux données par nom de colonne. Cet article explore des approches alternatives pour obtenir des dictionnaires à partir de requêtes SQLite, offrant ainsi une manière plus intuitive de travailler avec les données.

Row Factory

La fonction row_factory vous permet de spécifier comment les lignes de résultats sont renvoyées. En le définissant sur dict_factory, vous pouvez convertir les résultats de la requête en dictionnaires, où les clés sont des noms de colonnes et les valeurs sont des valeurs de colonne. Voici un 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(":memory:")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select 1 as a")
print(cur.fetchone()["a"])
Copier après la connexion

SQLite3.Row

Une autre option consiste à utiliser le type sqlite3.Row comme fabrique de lignes. Il offre un accès basé sur le nom, basé sur l'index et insensible à la casse, aux colonnes avec une surcharge de mémoire minimale :

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row  # add this row
cursor = con.cursor()
Copier après la connexion

Avec sqlite3.Row, vous pouvez accéder aux valeurs des colonnes soit par index, soit par nom :

row = cursor.fetchone()
value_by_index = row[0]
value_by_name = row["col_name"]
Copier après la connexion

Conclusion

La fonction row_factory et le type sqlite3.Row fournissent des des moyens de récupérer des dictionnaires à partir de requêtes SQLite, facilitant ainsi le travail avec les données par noms de colonnes. Le choix entre les deux dépend des exigences et préférences spécifiques.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal