Как ввести элемент в хранилище данных Google AppEngine?

StackOverflow https://stackoverflow.com/questions/2154110

  •  23-09-2019
  •  | 
  •  

Вопрос

Я хочу проверить, есть ли электронное письмо в моей базе данных в Appengine, а если нет:затем введите его в хранилище данных.

Я новичок в питоне.Почему этот простой код не работает? (Также, если есть лучший/более эффективный способ написать это, пожалуйста, скажите мне)

(Я получаю ошибку:БадАргументОшибка:Неиспользуемые позиционные аргументы [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()

И для справки, это мой класс БД:

class EmailDatabase(db.Model):
     emailaddress = db.StringProperty()
     date = db.DateTimeProperty(auto_now_add=True)
Это было полезно?

Решение

Вам не нужно использовать кавычки при привязке параметра к запросу:

query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))

В противном случае он прочитает его как строку и фактически вернет только те объекты, которые имеют :1 в качестве значения адреса электронной почты.

Кроме того, убедитесь, что вы подтверждаете ввод пользователя (self.request.get('emailaddress')) перед вставкой его в запрос.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top