파이썬의 Model.get_or_insert(key_name, **kwds)
메소드에 대한 Google 애플리케이션 엔진이 어떻게 작동하는지 이해할 수 없습니다.Model.get_or_insert()가 응용 프로그램 엔진에서 조상 트랜잭션 인 방법
제 생각에 트랜잭션 내부의 모든 데이터 저장소 연산은 조상 쿼리 여야합니다. 그러나 Model.get_or_insert(key_name, **kwds)
의 설명서가 조상 쿼리 인 방법을 알 수 없습니다. 다음과 같은 예를 들어, '부모'이후 두 번째 줄에 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
같이 쿼리를 부정 할 수
여기서는 머리카락을 나눌 필요가 없습니다. 응용 프로그램에서 트랜잭션을 올바르게 사용하는 방법을 이해하는 데 어려움을 겪고 있으며 내 이해를 높이기 위해이 설명서를보고있었습니다.
도움을 주셔서 감사합니다.
transaction() 함수에 xg = True를 전달하십시오. 그런 다음 하나의 트랜잭션 그룹으로 제한하는 대신 트랜잭션 콜백에서 최대 5 개의 엔티티 그룹을 조정할 수 있습니다. –