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"])
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()
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"]
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!