Я пытаюсь использовать ORM в Django для обработки данных с помощью бэкэнда PostgreSQL.Исходя из первичной записи, создайте сотни записей в связанной таблице, но если возникнут какие-либо ошибки, я хочу откатить все записи.Поэтому у меня весь процесс заключен в ручную транзакцию.
@transaction.commit_manually(main_record)
def save_data(data):
try:
create lots of records -> .save()
except Exception, e:
print 'Unexpected Error: %s' % e
transaction.rollback()
raise
else:
print 'Saving...'
try:
imgObj.processed = True
main_record.save()
transaction.commit()
print 'Saved!'
except Exception, e:
print 'Unexpected Error during commit: %s' % e
raise
Однако, когда я пытаюсь выполнить commit (), он выдает исключение «Операция ввода-вывода для закрытого файла».Googling находит несколько упоминаний об этом, но не так много в отношении PG, и никаких решений.Что это значит?
Редактировать: Я также заметил, что когда это происходит, есть также процесс postgres, помеченный именем моей базы данных и статусом "IDLE в транзакции".Должен ли я закончить этот процесс?