0
を使用して、異なるテーブルの別の列を参照のI持って次のシナリオ、SQLAlchemyのORM
Iが「シリアル」タイプの主キーを持っているテーブル(TABLE1)に挿入する必要が- 。
- 外部キーとしてtable1の主キーを含む別のテーブル(table2)に挿入する必要があります。
- 今両方同じトランザクション内で行われる挿入および生成された主キーは、表2 に
を査読する必要がありますが、私たちは、私はこのコードtable1idが走ったとき、私は
Base = declarative_base()
class Table1(Base):
__tablename__ = 'table1'
table1id= Column(Integer, primary_key=True)
name = Column(String)
class Table2(Base):
__tablename__ = 'table2'
table2id= Column(Integer, ForeignKey('table1.table1id'))
name = Column(String)
#
table1 = Table1(name='abc')
table2 = Table2(table2id=table1.table1id)
session.add(table1)
session.add(table2)
session.commit()
をしようとしたものをお見せしましょうテーブル1に15として挿入されていますが、表2では 'null'と表示されています。
ありがとうございました.. –
しかし、最初の挿入がロールバックされたかどうかにかかわらず、2番目の挿入が失敗したときに1つのクエリがありますか? –
フラッシュはコミットではありません。現在のSQLAセッションの未送信の変更をデータベースに送信します(挿入などを発行します)。通常、SQLAは自動フラッシュによる裏口のフラッシュを処理しますが、このような場合は明示的にする必要があります。 –