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

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

Mary-Kate Olsen
Libérer: 2025-01-04 02:18:41
original
770 Les gens l'ont consulté

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

Obtention de dictionnaires à partir de requêtes SQLite

Récupérer des données à partir de bases de données SQLite implique d'obtenir des listes correspondant à des lignes. Bien qu'il soit possible de déterminer les noms de colonnes à l'aide de l'attribut description, la conversion des résultats en dictionnaires nécessite un effort supplémentaire.

Solution utilisant row_factory

Le paramètre row_factory permet le personnalisation de la façon dont les lignes sont renvoyées. En le définissant sur une fonction qui prend un curseur et une ligne comme arguments et renvoie un dictionnaire, vous pouvez obtenir des dictionnaires au lieu de listes.

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

Solution utilisant sqlite3.Row

La documentation SQLite recommande d'utiliser le type sqlite3.Row, qui fournit un accès efficace basé sur le nom aux colonnes. En définissant row_factory sur sqlite3.Row, vous pouvez à la fois indexer et accéder aux colonnes par nom.

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

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