Maison > base de données > tutoriel mysql > Comment récupérer efficacement des dictionnaires à partir de requêtes SQLite ?

Comment récupérer efficacement des dictionnaires à partir de requêtes SQLite ?

DDD
Libérer: 2025-01-03 22:57:43
original
998 Les gens l'ont consulté

How to Efficiently Retrieve Dictionaries from SQLite Queries?

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

Dans l'extrait de code fourni, vous parcourez actuellement les tuples bruts renvoyés par la requête SQLite :

db = sqlite.connect("test.sqlite")
res = db.execute("select * from table")
Copier après la connexion

Cela renvoie une liste de tuples pour chaque ligne du tableau, ce qui nécessite de le faire manuellement extraire les noms de colonnes et construire des dictionnaires. Cependant, SQLite propose deux méthodes pour obtenir des dictionnaires directement à partir de requêtes :

1. row_factory

L'option row_factory vous permet de spécifier une fonction personnalisée utilisée pour créer un objet à partir de chaque ligne. Par exemple, la fonction suivante renvoie un dictionnaire :

def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d
Copier après la connexion

En définissant l'option row_factory sur cette fonction, chaque ligne renvoyée par la requête sera un dictionnaire :

con = sqlite3.connect(":memory:")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select 1 as a")
result = cur.fetchone()  # Returns {'a': 1}
Copier après la connexion

2. sqlite3.Row

Vous pouvez également définir row_factory sur sqlite3.Row, qui fournit un accès basé sur l'index et le nom aux colonnes sans aucune surcharge de mémoire supplémentaire :

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row
cursor = con.cursor()
result = cursor.fetchone()  # Returns Row object with attribute-like access
Copier après la connexion

En utilisant l'une ou l'autre de ces méthodes, vous pouvez facilement obtenir des dictionnaires ou des objets accessibles aux attributs à partir de requêtes SQLite, éliminant ainsi le besoin de construction manuelle de dictionnaires.

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