Wörterbücher aus SQLite-Abfragen abrufen
In Ihrem bereitgestellten Codeausschnitt iterieren Sie derzeit über die Rohtupel, die von der SQLite-Abfrage zurückgegeben wurden:
db = sqlite.connect("test.sqlite") res = db.execute("select * from table")
Dies gibt eine Liste von Tupeln für jede Zeile in der Tabelle zurück, was dies erforderlich macht Extrahieren Sie die Spaltennamen manuell und erstellen Sie Wörterbücher. Allerdings bietet SQLite zwei Methoden zum direkten Abrufen von Wörterbüchern aus Abfragen:
1. row_factory
Mit der Option row_factory können Sie eine benutzerdefinierte Funktion angeben, die zum Erstellen eines Objekts aus jeder Zeile verwendet wird. Beispielsweise gibt die folgende Funktion ein Wörterbuch zurück:
def dict_factory(cursor, row): d = {} for idx, col in enumerate(cursor.description): d[col[0]] = row[idx] return d
Durch Festlegen der Option row_factory auf diese Funktion ist jede von der Abfrage zurückgegebene Zeile ein Wörterbuch:
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
Alternativ können Sie row_factory auf sqlite3.Row setzen, was sowohl indexbasierten als auch namensbasierten Zugriff auf Spalten ohne zusätzlichen Speicheraufwand ermöglicht:
con = sqlite3.connect(...) con.row_factory = sqlite3.Row cursor = con.cursor() result = cursor.fetchone() # Returns Row object with attribute-like access
Durch die Verwendung einer dieser Methoden können Sie ganz einfach Wörterbücher oder Objekte, auf die über Attribute zugegriffen werden kann, aus SQLite-Abfragen abrufen, sodass keine manuelle Wörterbucherstellung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Wörterbücher aus SQLite-Abfragen effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!