SQLite クエリからの辞書の取得
提供されたコード スニペットでは、現在、SQLite クエリから返された生のタプルを反復処理しています。
db = sqlite.connect("test.sqlite") res = db.execute("select * from table")
これは各行のタプルのリストを返しますそのため、列名を手動で抽出して辞書を構築する必要があります。ただし、SQLite には、クエリから直接辞書を取得するための 2 つのメソッドが用意されています:
1。 row_factory
row_factory オプションを使用すると、各行からオブジェクトを作成するために使用されるカスタム関数を指定できます。たとえば、次の関数は辞書を返します:
def dict_factory(cursor, row): d = {} for idx, col in enumerate(cursor.description): d[col[0]] = row[idx] return d
この関数に row_factory オプションを設定すると、クエリから返される各行は辞書になります:
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
または、row_factory を sqlite3.Row に設定することもできます。これにより、追加のメモリ オーバーヘッドなしで、インデックス ベースと名前ベースの両方で列へのアクセスが提供されます。
con = sqlite3.connect(...) con.row_factory = sqlite3.Row cursor = con.cursor() result = cursor.fetchone() # Returns Row object with attribute-like access
これらのメソッドのいずれかを使用すると、SQLite クエリから辞書や属性にアクセス可能なオブジェクトを簡単に取得できるため、手動辞書構築用。
以上がSQLite クエリから辞書を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。