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

SQLite クエリからリストの代わりに辞書を取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-03 20:33:40156ブラウズ

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

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

SQLite データベースからデータを取得すると、通常、リストのリストが生成されます。各内部リストは、データベース内の行。このメソッドは機能しますが、列名でデータにアクセスする場合には不便な場合があります。この記事では、SQLite クエリから辞書を取得するための代替アプローチを検討し、データを操作するためのより直感的な方法を提供します。

Row Factory

row_factory 関数を使用すると、次の方法を指定できます。結果の行が返されます。これを dict_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

もう 1 つのオプションは、sqlite3.Row 型を行ファクトリとして使用することです。最小限のメモリオーバーヘッドで、インデックスベースと大文字小文字を区別しない名前ベースの両方で列へのアクセスを提供します:

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

sqlite3.Row を使用すると、インデックスまたは名前のいずれかで列の値にアクセスできます:

row = cursor.fetchone()
value_by_index = row[0]
value_by_name = row["col_name"]

結論

row_factory 関数とsqlite3.Row 型は、SQLite クエリから辞書を取得する効果的な方法を提供し、列名によるデータの操作を容易にします。この 2 つのどちらを選択するかは、特定の要件と好みによって決まります。

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

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