Como inserir o item no Google AppEngine DataStore?
-
23-09-2019 - |
Pergunta
Quero verificar se um email está no meu banco de dados no AppEngine e, se não: digite -o no armazenamento de dados.
Eu sou novo no Python.Por que esse código simples não está funcionando? (Também se houver uma maneira melhor/mais eficiente de escrever isso, diga -me)
(Recebo o erro: BadargumentError: argumentos posicionais não 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()
E para referência, esta é minha classe de banco de dados:
class EmailDatabase(db.Model):
emailaddress = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
Solução
Você não precisa usar aspas ao vincular um parâmetro à consulta:
query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))
Caso contrário, ele o lerá como uma string e realmente retornará apenas objetos que têm :1
como seu valor por e -mail.
Além disso, certifique -se de validar a entrada do usuário (self.request.get('emailaddress')
) antes de inseri -lo na consulta.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow