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")
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
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}
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
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!