J'ai besoin d'itération et de supprimer tous les enregistrements de mon magasin de données. J'utilise Google App Engine Launcher pour la tester sur l'hôte local. Comment le faire?
Quand j'essaie de supprimer tous les records du modèle de la personne de cette façon: p> Je reçois une erreur le champ est une occasion de supprimer le fichier local qui stocke tous les enregistrements de DB? P> p> BadvalueError: Propriété Y doit être une instance Str ou Unicode, pas un long code>
Je suppose qu'il y a un conflit dans les types de données de modèle. P>
y = db.stringproperty () code> était précédemment
y = dB. IntegerProperty () code>.
En ce moment, j'ai besoin de chasser tous les enregistrements de DB. Comment puis-je faire cela? P>
3 Réponses :
Si vous avez une variable qui stocke un enregistrement sur la base de données, vous pouvez simplement utiliser Supprimer ().
C'est-à-dire que vous avez une entité appelée personnes, vous pouvez faire: P>
personToDelete = db.GqlQuery("SELECT * FROM Persons WHERE name='Joe'"); person = personToDelete[0]; person.delete();
Cela nous donne une erreur: «Query» L'objet ne prend pas en charge l'indexation. Qu'as-on manquant?
La langue GQL ne peut être utilisée que pour récupérer des entités ou une clé (cf. http: // code.google.com/appengine/docs/python/datastore/gqlreference.html )
Vous devrez le faire: p> concernant le Erreur Il semble que vous souhaitiez tout supprimer, une autre solution serait d'aller à la page d'administration de DataSore - http: // localhost : 8080 / _ah / admin sur localhost ou via https://appengine.google.com/ - et supprimer tout. P> Vous pourriez trouver cela utile: http://code.google.com/appengine/articles /update_schema.html p> p> BadvalueError: Propriété Y doit être une instance STR ou Unicode, pas une longue code>, vous devrez modifier toutes les données (de l'entier à la chaîne) dans la base de données pour résoudre le conflit. P >
Ceci est pas correct b>. Vous n'avez pas besoin du explicite pour code>. C'était soit corrigé ou quelque chose d'autre était faux
Juste pour partager des conseils utiles sur la réponse déjà acceptée.
Vous pouvez effectuer ce qui suit avec db.delete: p> ceci enregistre beaucoup d'opérations de DB . p> p>
Je pense que cela est très inefficace. Vous créez un autre tableau entier, mais vous n'avez pas besoin de.
Cela a donné une erreur "AttributeError:" Liste 'Object n'a pas d'attribut' Supprimer '"" suggestions?
Lorsque vous faites qobj = personne.All (), vous définissez qobj vers une liste d'objets de personne. Pour autant que je sache, vous ne pouvez pas appeler Supprimer sur cette liste - vous devez itérer dans la liste et supprimer chaque objet séparément.
code.google.com/appengine/docs/python/datastore/ ... ... Supprimer (modèles) Supprime une ou plusieurs instances de modèle du magasin de données. Arguments: Modèles une instance de modèle, une clé pour une entité ou une liste (ou une autre iTable) d'instances modèles ou de clés d'entités à supprimer.
Je viens d'essayer
db.delete (personne.Tall ()) code>
, à l'aide de votre modèle code> Personne CODE>, et cela fonctionne parfaitement (efface toutpersonne code> objets de db)