ホームページ >データベース >mysql チュートリアル >SQLite クエリからリストではなく辞書を効率的に取得するにはどうすればよいですか?

SQLite クエリからリストではなく辞書を効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 02:18:41816ブラウズ

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

SQLite クエリからの辞書の取得

SQLite データベースからのデータの取得には、行に対応するリストの取得が含まれます。 description 属性を使用して列名を決定することは可能ですが、結果を辞書に変換するには追加の作業が必要です。

row_factory を使用した解決策

row_factory パラメーターにより、行が返される方法のカスタマイズ。カーソルと行を引数として辞書を返す関数に設定することで、リストの代わりに辞書を取得することができます。

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を使った解決策

SQLite ドキュメントでは、列への名前ベースの効率的なアクセスを提供する sqlite3.Row 型の使用を推奨しています。 row_factory を sqlite3.Row に設定すると、名前による列のインデックス付けとアクセスの両方が可能になります。

con = sqlite3.connect(...)
con.row_factory = sqlite3.Row   # add this row
cursor = con.cursor()

以上がSQLite クエリからリストではなく辞書を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。