Попытка смешать объекты, принадлежащие различным транзакциям
pony.orm.core.TransactionError: An attempt to mix objects belonging to different transactions
Я знаю, что эта ошибка носит описательный характер, я просто не могу понять, ПОЧЕМУ она происходит. Я искал Google, документы, другие сообщения SO, и ничего не нашел.
Есть идеи?
1 ответ
Решение
Эта ошибка возникает, если кто-то пытается связать два объекта, которые принадлежат картам идентичности двух разных сеансов БД:
from pony.orm.examples.university1 import *
populate_database()
with db_session:
g = Group[101]
with db_session:
s = Student[4]
s.group = g # or g.students.add(s)
Каждый сеанс БД должен работать с объектами, полученными только в этом сеансе БД. Если вам нужно хранить некоторую информацию между сессиями БД, вы можете хранить id
значение вместо самого объекта. Также вы можете засолить объекты в одном db_session
а затем откройте их в другом db_session
,