2017-02-14 21 views
2

pony.orm.core.TransactionError: An attempt to mix objects belonging to different transactionsПопытка смешивать объекты, принадлежащие к различным операциям

Я знаю, что эта ошибка носит описательный характер, я просто не могу понять, почему его возникновения. Я искал google, документы, другие сообщения SO и ничего не нашел.

Любые идеи?

ответ

3

Этой ошибка возникает, если кто-то пытается Интерлинк два объекта, которые принадлежат к картам идентичности двух различных БД сессий:

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) 

Каждой дб сессия должна работать с объектами, извлекаемых в течение только этой дб сессии. Если вам нужно сохранить некоторую информацию между сеансами db, вы можете сохранить значение объекта id вместо самого объекта. Также вы можете разжевывать объекты в одном db_session, а затем рассыпать их в другом db_session.