だから私はSQLAlchemyに不慣れで、新しいUserオブジェクトが作成された後、Permissionsオブジェクトがデフォルトで作成されることを望んでいます。ドキュメントを読むと、after_insertマッパーイベントが私が使用すべきもののようです。問題は、オブジェクトが実際にコミットされる前にイベントリスナーが呼び出されることです。
少なくとも、パーミッションオブジェクトをトランザクションに入れるか、ユーザーオブジェクトが実際にコミットされた後に作成されるオブジェクトのリストに入れる方法はありますか?
class Users():
__tablename__ = 'users'
user_id = Column(String(36), primary_key=True, nullable=False)
.......
class Permissions():
__tablename__ = 'permissions'
user_id = Column(String(36), ForeignKey('users.user_id'), primary_key=True,
nullable=False)
..........
@event.listens_for(Users, "after_insert)
def create_permissions(mapper, connection, user):
connection.execute(Permissions.__table__.insert(user_id=user.user_id))
IntegrityError:(IntegrityError)(1452、'子行を追加または更新できません:外部キー制約が失敗します
理想的には、Usersテーブルにデータベーストリガーを指定せずにこれを実行したいと思います。