Столкнулся с непонятной мне штукой из-за которой скоро, похоже, забянят в Гугле.
Проблема в том, при удалении одной из записей ORM пытается для всех дочек выставить в null ключевое поле, выполняя для них update. Т.к. поле не может быть null - ошибка. Само удаление дочек делается через foreign keys силами SQLite.
Сущности объявлены следующим образом:
class Identification(Entity):
id = Field(Integer, primary_key = True)
analysis = ManyToOne("Analysis", colname = "analysisId")
organismProfile = Field(PickleType)
antibiogram = OneToMany("AntibiogramItem")
using_options(tablename = "identification")
def delete(self):
super(Identification, self).delete()
session.commit()
class AntibiogramItem(Entity):
id = Field(Integer, primary_key = True)
identification = ManyToOne("Identification", colname = "identificationId")
itemIndex = Field(Integer)
antibiotic = Field(Unicode(100))
using_options(tablename = "antibiogram")
2011-12-12 22:06:33,025 INFO sqlalchemy.engine.base.Engine (12,)
2011-12-12 22:06:35,039 INFO sqlalchemy.engine.base.Engine UPDATE antibiogram SET "identificationId"=? WHERE antibiogram.id = ?
2011-12-12 22:06:35,039 INFO sqlalchemy.engine.base.Engine (None, 277)
2011-12-12 22:06:35,039 INFO sqlalchemy.engine.base.Engine ROLLBACK