Попытка смешать объекты, принадлежащие различным транзакциям

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,

Другие вопросы по тегам