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」列で発番された値で、子テーブルへデータを登録するケースはよくあるので、覚えておきましょう。
0 件のコメント:
コメントを投稿