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