Wörterbücher aus SQLite-Abfragen abrufen
Das Abrufen von Daten aus einer SQLite-Datenbank führt normalerweise zu einer Liste von Listen, wobei jede innere Liste einer entspricht Zeile in der Datenbank. Obwohl diese Methode funktionsfähig ist, kann sie für den Zugriff auf Daten über den Spaltennamen unpraktisch sein. In diesem Artikel werden alternative Ansätze zum Abrufen von Wörterbüchern aus SQLite-Abfragen untersucht, die eine intuitivere Möglichkeit bieten, mit Daten zu arbeiten.
Row Factory
Mit der Funktion row_factory können Sie angeben, wie Die Ergebniszeilen werden zurückgegeben. Indem Sie es auf dict_factory setzen, können Sie Abfrageergebnisse in Wörterbücher konvertieren, in denen Schlüssel Spaltennamen und Werte Spaltenwerte sind. Hier ist ein Beispiel:
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"])
SQLite3.Row
Eine andere Möglichkeit besteht darin, den Typ sqlite3.Row als Zeilenfabrik zu verwenden. Es bietet sowohl indexbasierten als auch namenbasierten Zugriff ohne Berücksichtigung der Groß-/Kleinschreibung auf Spalten mit minimalem Speicheraufwand:
con = sqlite3.connect(...) con.row_factory = sqlite3.Row # add this row cursor = con.cursor()
Mit sqlite3.Row können Sie auf Spaltenwerte entweder nach Index oder nach Namen zugreifen:
row = cursor.fetchone() value_by_index = row[0] value_by_name = row["col_name"]
Fazit
Sowohl die Funktion row_factory als auch der Typ sqlite3.Row bieten effektive Möglichkeiten um Wörterbücher aus SQLite-Abfragen abzurufen, was die Arbeit mit Daten nach Spaltennamen erleichtert. Die Wahl zwischen beiden hängt von den spezifischen Anforderungen und Vorlieben ab.
Das obige ist der detaillierte Inhalt vonWie kann ich Wörterbücher anstelle von Listen aus SQLite-Abfragen abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!