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")
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
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}
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
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!