Comment entrer élément dans Google AppEngine Datastore?
-
23-09-2019 - |
Question
Je veux vérifier si un courriel est dans ma base de données en Appengine, et sinon: entrez dans le magasin de données.
Je suis nouveau à python. Pourquoi est-ce simple code ne fonctionne pas? (façon même s'il y a une meilleure façon / plus efficace d'écrire cela, s'il vous plaît me dire)
(je reçois l'erreur: BadArgumentError: arguments de position non utilisée [1])
class EmailAdd(webapp.RequestHandler):
def get(self):
query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress=':1'", self.request.get('emailaddress'))
result = query.get()
if result is None:
newemail = EmailDatabase()
newemail.emailaddress = self.request.get('emailaddress')
newemail.put()
Et pour référence, ceci est ma classe db:
class EmailDatabase(db.Model):
emailaddress = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
La solution
Vous n'avez pas besoin d'utiliser des guillemets lors de la liaison d'un paramètre à la requête:
query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))
Dans le cas contraire, il lira comme une chaîne et fait retourner uniquement les objets qui ont :1
que leur valeur emailaddress.
En outre, assurez-vous de valider l'entrée utilisateur (self.request.get('emailaddress')
) avant de l'insérer dans la requête.