问题遇到的现象和发生背景
在学习SQLAlchemy时
遇到的现象和发生背景,请写出第一个错误信息
出现错误 Resource.Closed.Error : this transaction is closed
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
@db.event.listens_for(User, 'after_delete', named=True)
def delete_account(**kwargs) :
target =kwargs['target']
for username in [target.username] :
if username is not None :
dis = Photo.query.filter_by(user_name=username).update({'user_name':'Disposed'})
db.session.commit()
class User(db.Model) :
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(30), unique=True)
password = db.Column(db.String(30))
photos = db.relationship('Photo', back_populates='users', cascade='all')
class Photo(db.Model) :
id = db.Column(db.Integer, primary_key=True)
photoname =db.Column(db.String(127), unique=True)
purename = db.Column(db.String(127), unique=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
users = db.relationship('User', back_populates='photos')
user_name = db.Column(db.String(30), unique=True)
运行结果及详细报错内容
Traceback (most recent call last):
File "/usr/lib/python3.10/code.py", line 90, in runcode
exec(code, self.locals)
File "", line 1, in
File "", line 2, in commit
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 1451, in commit
self._transaction.commit(_to_root=self.future)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 829, in commit
self._prepare_impl()
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
self.session.flush()
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 3444, in flush
self.flush(objects)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 3583, in flush
with util.safe_reraise():
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/langhelpers.py", line 84, in exit
compat.raise(value, with_traceback=traceback)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/util/compat.py", line 210, in raise
raise exception
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 3584, in _flush
transaction.rollback(_capture_exception=True)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 851, in rollback
self._assert_active(prepared_ok=True, rollback_ok=True)
File "/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/session.py", line 617, in _assert_active
raise sa_exc.ResourceClosedError(closed_msg)
sqlalchemy.exc.ResourceClosedError: This transaction is closed
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
尝试修改Photo表