Как ввести элемент в хранилище данных Google AppEngine?
-
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')
) перед вставкой его в запрос.