Heim > Datenbank > MySQL-Tutorial > Wie kann ich Wörterbücher anstelle von Listen effizient aus SQLite-Abfragen abrufen?

Wie kann ich Wörterbücher anstelle von Listen effizient aus SQLite-Abfragen abrufen?

Mary-Kate Olsen
Freigeben: 2025-01-04 02:18:41
Original
813 Leute haben es durchsucht

How Can I Efficiently Retrieve Dictionaries Instead of Lists from SQLite Queries?

Wörterbücher aus SQLite-Abfragen abrufen

Das Abrufen von Daten aus SQLite-Datenbanken umfasst das Abrufen von Listen, die Zeilen entsprechen. Während es möglich ist, die Spaltennamen mithilfe des Beschreibungsattributs zu ermitteln, erfordert die Konvertierung der Ergebnisse in Wörterbücher zusätzlichen Aufwand.

Lösung mit row_factory

Der Parameter row_factory ermöglicht die Anpassung der Art und Weise, wie Zeilen zurückgegeben werden. Indem Sie es auf eine Funktion setzen, die einen Cursor und eine Zeile als Argumente akzeptiert und ein Wörterbuch zurückgibt, können Sie Wörterbücher anstelle von Listen erhalten.

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"])
Nach dem Login kopieren

Lösung mit sqlite3.Row

In der SQLite-Dokumentation wird die Verwendung des Typs sqlite3.Row empfohlen, der einen effizienten namensbasierten Zugriff auf Spalten ermöglicht. Indem Sie row_factory auf sqlite3.Row setzen, können Sie Spalten nach Namen indizieren und darauf zugreifen.

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row   # add this row
cursor = con.cursor()
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Wörterbücher anstelle von Listen effizient aus SQLite-Abfragen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage