Cómo entrar artículo en Google App Engine almacén de datos?
-
23-09-2019 - |
Pregunta
Quiero comprobar si un correo electrónico es en mi base de datos de App Engine, y si no: a continuación, lo inserta en el almacén de datos.
Soy nuevo en Python. ¿Por qué este simple código no funciona? (También si hay una manera mejor manera / más eficiente para escribir esto, por favor dígame)
(I obtener el error: BadArgumentError: argumentos posicionales no utilizados [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()
Y como referencia, esto es mi clase db:
class EmailDatabase(db.Model):
emailaddress = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
Solución
No es necesario que use comillas al enlazar un parámetro para la consulta:
query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))
De lo contrario, lo leerá como una cadena y en realidad sólo devolver los objetos que tienen :1
como su valor EMAILADDRESS.
Además, asegúrese de validar la entrada del usuario (self.request.get('emailaddress')
) antes de insertarlo en la consulta.