遇到一个很有意思的问题 在操作某个对象时,想在插入该对象后 同时写入其它数据。
用sqlalchemy做了一个event.listen for after insert 后插入数据。
发现不能插入 原因在于Transaction is closed ,认真思考了下,发现sqlalchemy一个很有意思的机制,事务写在了同一个缓冲区内,在没有flush之前,Transaction处于打开状态,flush时一起提交。
那么这个问题可以这样解决了,再开一个event.listen before flush 在事件未提交前写入缓冲区即可。