Python sqlite3.Row を使ってインデックスでもカラム名でも要素にアクセスできるようにする¶
# サンプルテーブル。mein.db というデータベースファイルに members というテーブルがあるとする $ sqlite3 -header -separator " " main.db "SELECT * FROM members;" mem_id name age likes 100 John 22 Cheese 300 Ash 44 Oil 500 Q 24 CPU # スクリプトの中身 $ cat SQLITE.py #! /usr/bin/env python3 # -*- coding: utf-8 -*- import sqlite3 def fetch(db, sql) : con = sqlite3.connect(db) con.row_factory = sqlite3.Row cur = con.cursor() cur.execute(sql) for row in cur : yield row # このジェネレータで返している row は # インデックスでもカラム名でも要素にアクセス可能なオブジェクト con.close() if __name__ == '__main__' : db = 'main.db' sql = 'SELECT * FROM members;' for mem_id, name, _, _ in fetch(db, sql) : print("By index:", mem_id, name) for row in fetch(db, sql) : print("By column name:", row["mem_id"], row["name"]) # 実行してみる $ SQLITE.py By index: 100 John By index: 300 Ash By index: 500 Q By column name: 100 John By column name: 300 Ash By column name: 500 Q 参考: 12.6. sqlite3 — SQLite データベースに対する DB-API 2.0 インタフェース - 12.6.8.2. 位置ではなく名前でカラムにアクセスする
Last modified: 2016-12-19 | ||
|
||
|
||
© Shin Nakamura/BasicWerk 2008 - 2024 |