Pythonのsqlite3のメソッド row_factory

Pythonのsqlite3モジュールのrow_factoryは、データベースから取得した行の結果セットをカスタマイズするための属性です。row_factory属性を設定することで、デフォルトの結果セットの表現方法をカスタマイズできます。

row_factory属性は、カスタムの行オブジェクトを作成するために使用されます。通常、結果セットから取得したデータはタプルのリストとして返されますが、row_factoryを設定することで、データベースの行をカスタムのPythonオブジェクトに変換できます。

以下は、row_factory属性を使用してデータベースから取得した行をカスタムオブジェクトに変換する例です:

python
import sqlite3

# カスタム行オブジェクトを定義
class CustomRow:
    def __init__(self, column1, column2):
        self.column1 = column1
        self.column2 = column2

# SQLiteデータベースに接続
connection = sqlite3.connect('mydatabase.db')

# row_factory属性を設定
connection.row_factory = lambda cursor, row: CustomRow(row[0], row[1])

# SQLクエリを実行
cursor = connection.cursor()
cursor.execute("SELECT column1, column2 FROM mytable")

# 結果を取得
results = cursor.fetchall()

# カーソルを閉じる
cursor.close()

# データベース接続を閉じる
connection.close()

# 結果を表示
for row in results:
    print(f"Column1: {row.column1}, Column2: {row.column2}")

この例では、row_factory属性にラムダ関数を設定して、結果セットの行をCustomRowというカスタム行オブジェクトに変換しています。その後、SQLクエリを実行し、結果を取得して表示しています。

row_factory属性をカスタマイズすることで、データベースから取得したデータをより具体的なPythonオブジェクトに変換し、データの取り扱いや操作を容易にできます。