문제의 코드가 제대로 작동하는 것 같습니다. select 문과 일치하는 FriendList 엔터티가 데이터 저장소에 실제로 존재하는지 다시 확인하십시오.
제안 :
deleteContact = db.GqlQuery("SELECT __key__ FROM FriendList WHERE myNum = :1 AND friendNum = :2", myId,friendId)
result = deleteContact.get()
if result is not None:
db.delete(result)
else:
logging.error('result was None')
만 더 효율적입니다 데이터 저장소에서 키를 검색 결과에 다른 작업을 수행하지 않는 때문에. 여기서 한 가지 결과 만 얻었으니 큰 문제는 아니지만 나중에 데이터 스토어에서 많은 수의 항목을 삭제해야하는 경우주의해야 할 사항입니다.
하나의 레코드 만 필요하므로 deleteContact.get()을 호출하면 레코드 하나만 검색되지만 일치하는 엔티티가 없으면 None을 반환합니다. None을 전달하면 db.delete()가 BadArgumentError를 던질 것이므로 테스트 해보십시오.
또는 db.delete()에 전달할 일치하는 엔티티가없는 경우 deleteContact.fetch (1)는 빈 목록을 반환합니다. 그러나 엔티티가 실제로 발견되었는지 확인하려면 fetch()에서 얻은 목록의 길이가 0인지 확인해야합니다.
db.delete (result)는 결과가 false 인 경우 예외를 throw합니다. 없음. 그것을 검사하거나 fetch()를 사용할 필요가있다. 일치하는 엔티티가 없다면 아무것도 아닌 빈리스트를 반환한다. –