Я не понимаю, как работает механизм приложений Google для метода Model.get_or_insert(key_name, **kwds)
в python.
Насколько я понимаю, все операции с хранилищами данных внутри транзакции должны быть запросами предка.Однако я не вижу, как документация для Model.get_or_insert(key_name, **kwds)
является запросом предка.В следующем примере, поскольку «parent» не указан в аргументах для последней строки, не будет ли результат parent=kwds.get('parent')
во второй строке None
, что приведет к отрицанию запроса как запроса предка?:
def txn(key_name, **kwds):
entity = Story.get_by_key_name(key_name, parent=kwds.get('parent')) # parent is not defined?
if entity is None:
entity = Story(key_name=key_name, **kwds)
entity.put()
return entity
def get_or_insert(key_name, **kwargs):
return db.run_in_transaction(txn, key_name, **kwargs)
get_or_insert('some key', title="The Three Little Pigs") # no parent specified
( ссылка на документацию )
Я не пытаюсь тут расстаться, у меня просто проблемы с пониманием, как правильно использовать транзакции в моем собственном приложениии искал эту документацию, чтобы улучшить мое понимание.
Большое спасибо за вашу помощь!