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)
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top