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

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

DDD
DDDOriginal
2025-01-04 11:42:34955Durchsuche

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

Wörterbücher aus SQLite-Abfragen abrufen

In Python führt das Abrufen von Daten aus einer SQLite-Datenbank normalerweise zu Listen, die Tabellenzeilen darstellen. Während dies für den Zugriff auf Daten praktisch ist, kann es wünschenswert sein, stattdessen Wörterbücher für einen strukturierteren und schlüsselbasierten Zugriff zu erhalten.

Eine Methode, dies zu erreichen, ist das row_factory-Attribut. Indem Sie es auf eine benutzerdefinierte Funktion festlegen, können Sie angeben, wie Zeilen aus einem Ergebnissatz verarbeitet werden sollen. Zum 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("test.sqlite")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select * from table")
rows = cur.fetchall()

print(rows[0]["col1"])

Eine andere Lösung, wie in der SQLite-Dokumentation vorgeschlagen, besteht darin, den optimierten Zeilentyp als row_factory zu verwenden:

con.row_factory = sqlite3.Row

cursor = con.cursor()
row = cursor.fetchone()

print(row["col1"])

Dieser Zeilentyp stellt beides indexbasiert bereit und namenbasierter Zugriff auf Spalten ohne Berücksichtigung der Groß-/Kleinschreibung mit minimalem Speicheraufwand, was es zu einer effizienteren Lösung als benutzerdefinierte wörterbuchbasierte Ansätze macht.

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

Stellungnahme:
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