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 ?
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!