[SQLAlchemy] AutoIncrementで発番された連番を取得する

2021年6月3日木曜日

Python

t f B! P L

SQLAlchemyで「AutoIncrement」の列があるテーブルにレコードを挿入した時に発番された値を取得する方法を紹介します。

スポンサーリンク

AutoIncrementで発番された値を取得する方法

データを挿入後、session.flush()を呼び出す事で、モデルからAutoIncrement型で発番された連番が取得できる。

user = User()
user.userName = "hoge"
user.age = 11

session.add(user)
session.flush() #これが重要
print("id=" + user.id)

複数レコードを挿入したときでもOK

次のサンプルコードのように、複数のレコードを挿入した場合も、session.flush()を1回呼べば、各レコードの変数にAutoIncrementで発番された値が格納されます。

user1 = User()
user1.userName = "foo"
user1.age = 11

user2 = User()
user2.userName = "bar"
user2.age = 12

session.add(user1)
session.add(user2)
session.flush() #これが重要

print("user1.id=" + user1.id)  #> 1
print("user2.id=" + user2.id)  #> 2

スポンサーリンク

まとめ

Python + SQLAlchemyで「AutoIncrement」列に発番された値を取得する方法を紹介してきました。

「AutoIncrement」列で発番された値で、子テーブルへデータを登録するケースはよくあるので、覚えておきましょう。

スポンサーリンク

QooQ