Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Kamus dengan Cekap daripada Pertanyaan SQLite?

Bagaimana untuk Mendapatkan Kamus dengan Cekap daripada Pertanyaan SQLite?

DDD
Lepaskan: 2025-01-03 22:57:43
asal
1047 orang telah melayarinya

How to Efficiently Retrieve Dictionaries from SQLite Queries?

Mengambil semula Kamus daripada Pertanyaan SQLite

Dalam coretan kod yang anda berikan, anda sedang mengulangi tuple mentah yang dikembalikan daripada pertanyaan SQLite:

db = sqlite.connect("test.sqlite")
res = db.execute("select * from table")
Salin selepas log masuk

Ini mengembalikan senarai tupel untuk setiap baris dalam jadual, menjadikannya perlu untuk mengekstrak nama lajur dan membina kamus secara manual. Walau bagaimanapun, SQLite menyediakan dua kaedah untuk mendapatkan kamus terus daripada pertanyaan:

1. row_factory

Pilihan row_factory membolehkan anda menentukan fungsi tersuai yang digunakan untuk mencipta objek daripada setiap baris. Sebagai contoh, fungsi berikut mengembalikan kamus:

def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d
Salin selepas log masuk

Dengan menetapkan pilihan row_factory kepada fungsi ini, setiap baris yang dikembalikan daripada pertanyaan akan menjadi kamus:

con = sqlite3.connect(":memory:")
con.row_factory = dict_factory
cur = con.cursor()
cur.execute("select 1 as a")
result = cur.fetchone()  # Returns {'a': 1}
Salin selepas log masuk

2. sqlite3.Row

Sebagai alternatif, anda boleh menetapkan row_factory kepada sqlite3.Row, yang menyediakan akses berasaskan indeks dan nama kepada lajur tanpa sebarang overhed memori tambahan:

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row
cursor = con.cursor()
result = cursor.fetchone()  # Returns Row object with attribute-like access
Salin selepas log masuk

Dengan menggunakan salah satu kaedah ini, anda boleh mendapatkan kamus atau objek yang boleh diakses atribut dengan mudah daripada pertanyaan SQLite, menghapuskan keperluan untuk pembinaan kamus manual.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kamus dengan Cekap daripada Pertanyaan SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan