Как ввести элемент в хранилище данных Google AppEngine? - PullRequest
3 голосов
/ 28 января 2010

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

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

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

1 Ответ

6 голосов
/ 28 января 2010

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

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

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

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

...