Wie Artikel in Google App Engine-Datenspeicher betreten?
-
23-09-2019 - |
Frage
Ich möchte überprüfen, ob eine E-Mail in meiner Datenbank in appengine ist, und wenn nicht: dann geben Sie es in den Datenspeicher.
Ich bin neu in Python. Warum ist dieser einfache Code funktioniert nicht? (auch wenn es einen besseren Weg / effizienter Weg, dies zu schreiben, bitte sagen Sie mir)
(I den Fehler: BadArgumentError: Nicht verwendete Positions Argumente [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()
Und als Referenz, das ist meine db Klasse:
class EmailDatabase(db.Model):
emailaddress = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
Lösung
Sie haben nicht zu verwenden Anführungszeichen benötigen, wenn Sie einen Parameter für die Abfrage Bindung:
query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))
Sonst wird es als String gelesen und eigentlich nur Objekte zurück, die :1
als ihre E-Mailadresse Wert hat.
Also, stellen Sie sicher, bestätigen Sie die Eingabe des Benutzers (self.request.get('emailaddress')
), bevor es in die Abfrage eingefügt wird.