У меня есть некоторые определения моделей, где я переопределил их методы __repr__
. Так, например, давайте принимать во внимание следующие объекты:Как можно избежать DatabaseSessionIsOver извне вызовов
def A(db.Entity):
id = PrimaryKey(int, auto=True)
name = Required(unicode)
b = Optional("B")
def __repr__(self):
return self.name
def B(db.Entity):
id = PrimaryKey(int, auto=True)
name = Required(unicode)
a = Required("A")
def __repr__(self):
return '{n} from a={aname}'.format(n=self.name, aname = self.a)
Это поднимает DatabaseSessionIsOver
исключение в то время как я использовал метод search(B, 'aaaa
) из Flask-PonyWhoosh, даже если он используется db_session
завернуты внутрь:
@orm.db_session
def search(model, *arg, **kw):
return model._wh_.search(*arg, **kw)
Исключение возникает только тогда, когда какой-либо объект переопределяет метод __repr__
таким образом, который я сделал в приведенном выше примере.
Однако I'am использованием, чтобы избежать этой проблемы следующие предложения:
with db_session:
print(search(A, 'karl'))
Так, в ближайшее время, вопрос в том, есть ли способ, чтобы избежать использования with ...
, возможно, изменяя метод __repr__
или возможно, изменить методы из пакета ?.
Спасибо,
PD: Я читал prefetch method, но это, кажется, не подходит. Я не уверен.