Le code de la question semble devoir fonctionner. Vérifiez qu'une entité FriendList correspondant à l'instruction select existe réellement dans le magasin de données.
Quelques suggestions:
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')
Puisque vous ne faites rien d'autre avec les résultats, seulement récupérer les clés du magasin de données sera plus efficace. Ce n'est pas un gros problème ici puisque vous n'obtenez qu'un seul résultat, mais c'est quelque chose à savoir si vous devez par la suite supprimer un grand nombre d'entités du magasin de données.
Étant donné que vous n'avez besoin que d'un seul enregistrement, l'appel de deleteContact.get() n'en récupèrera qu'un, mais il retournera None s'il n'y a pas d'entité correspondante. db.delete() lancera BadArgumentError si vous le transmettez None, alors assurez-vous de le tester. DeleteContact.fetch (1) renverra une liste vide s'il n'y a pas d'entités correspondantes, ce qui est correct pour passer à db.delete(). Mais si vous voulez vous assurer qu'une entité a effectivement été trouvée, vous devez vous assurer que la liste obtenue de fetch() n'a pas une longueur de 0.
db.delete (résultat) lèvera une exception si le résultat est Aucun. Besoin de vérifier ou d'utiliser fetch() - qui renvoie une liste vide plutôt que none si aucune entité correspondante n'est trouvée –