所以我是 SQLAlchemy 的新手,我想在创建新的用户对象后默认创建一个权限对象。阅读文档似乎 after_insert 映射器事件是我应该使用的。问题是在实际提交对象之前调用了事件侦听器。
有没有办法让 Permissions 对象至少放入可能的事务中或在实际提交用户对象后要创建的对象列表中。
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, '无法添加或更新子行:外键约束失败
理想情况下,我希望在用户表上没有数据库触发器的情况下执行此操作。