Maison >base de données >tutoriel mysql >Comment puis-je récupérer des données de dictionnaire à partir de requêtes SQLite ?

Comment puis-je récupérer des données de dictionnaire à partir de requêtes SQLite ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 08:29:36236parcourir

How Can I Retrieve Dictionary Data from SQLite Queries?

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

Lors de l'exécution de requêtes SQLite, vous pouvez rencontrer des situations dans lesquelles vous devez plutôt obtenir des données au format dictionnaire de listes. Cet article vous proposera plusieurs solutions pour y parvenir.

Utilisation de row_factory

Le paramètre row_factory dans la connexion SQLite permet de spécifier comment les lignes sont renvoyées. En le définissant sur une fonction personnalisée, vous pouvez convertir des tuples en dictionnaires :

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"])  # Output: 1

En utilisant sqlite3.Row

Vous pouvez également définir row_factory sur sqlite3.Row , qui fournit un moyen optimisé d'accéder aux colonnes à la fois par index et name :

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row  # Set row_factory to sqlite3.Row
cursor = con.cursor()
row = cursor.fetchone()
print(row["col1"])  # Access columns by name

Implémentation personnalisée

Si aucune des solutions ci-dessus ne répond à vos besoins, vous pouvez créer votre propre implémentation personnalisée. Cependant, cette approche n'est généralement pas recommandée en raison de problèmes de performances potentiels par rapport aux solutions fournies.

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!

Déclaration:
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