Pythonのsqlite3のメソッド lastrowid

Pythonのsqlite3モジュールのlastrowid属性は、直前のINSERTクエリによって挿入された行の中で最後に挿入された行の行ID(自動増分キーの値)を取得するために使用されます。

lastrowid属性はカーソルオブジェクトに関連付けられており、INSERT文を実行した後にその属性を使用して最後に挿入された行の行IDを取得できます。ただし、lastrowid属性はSQLiteデータベースのテーブルに自動増分キー(通常はINTEGER PRIMARY KEY)が存在する場合にのみ有効です。自動増分キーがないテーブルでは、lastrowid属性は0を返します。

以下は、lastrowid属性の基本的な使用法の例です:

python
import sqlite3

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

# カーソルを取得
cursor = connection.cursor()

# テーブルを作成
cursor.execute("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY, name TEXT)")

# データを挿入
cursor.execute("INSERT INTO mytable (name) VALUES (?)", ("John Doe",))

# 最後に挿入された行の行IDを取得
last_inserted_id = cursor.lastrowid

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

# データベース接続をコミット
connection.commit()

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

# 最後に挿入された行の行IDを表示
print(f"Last inserted row ID: {last_inserted_id}")

この例では、INSERTクエリを実行して新しい行を挿入し、lastrowid属性を使用して最後に挿入された行の行IDを取得しています。行IDは通常、自動増分キーを持つテーブルでのみ使用されます。

lastrowid属性は、新しい行の行IDを取得する際に非常に便利であり、データベース内で一意の識別子を使用する場合に役立ちます。