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

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

DDD
リリース: 2025-01-03 22:57:43
オリジナル
998 人が閲覧しました

How to Efficiently Retrieve Dictionaries from SQLite Queries?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート