SQLAlchemyで簡単な問題が発生しました。テーブルに1つのモデルがあります。ここでは、それをModel1と呼びます。このテーブルに行を追加し、自動インクリメントキーを取得して、それを使用して別のモデルを作成し、このキーを使用できるようにします。これは欠陥のあるデータベース設計ではありません(1:1関係など)。他のテーブルがリモートホストに転送されているため、このキーが必要なだけです。サーバーが相互に理解できるように、一致するキーが必要です。これら2つのテーブル間にこれ以上のローカル参照はありません。また、そのため、リレーションを作成することもできません。
次のコードを検討してください。
object1 = model.Model1(param)
DBSession.add(object1)
# if I do this, the line below fails with an UnboundExecutionError.
# and if I dont do this, object1.id won't be set yet
#transaction.commit()
object2 = model.AnotherModel(object1.id) #id holds the primary, autoincremented key
「手動で」コミットする必要さえないことを望みました。基本的に私が達成したいのは、「Model1」は絶えず成長しており、Model.idの主キーが増えていることです。AnotherModelは常に、まだ処理されていないModel1のほんの一部です。もちろん、テーブルのブールフィールドである「Model1」にフラグを追加して、すでに処理された要素をマークすることもできますが、これは必要ないことを望んでいました。
上記のコードを機能させるにはどうすればよいですか?
挨拶、
トム