3

我想检查一封电子邮件是否在 Appengine 的我的数据库中,如果没有:然后将其输入数据存储区。

我是 python 新手。 为什么这个简单的代码不起作用?(另外如果有更好的方法/更有效的方法来写这个,请告诉我)

(我得到错误: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)
4

1 回答 1

6

将参数绑定到查询时不需要使用引号:

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

否则,它将读取它作为一个字符串,实际上只返回具有:1作为其电子邮件地址值的对象。

此外,请确保在将用户输入 ( self.request.get('emailaddress')) 插入查询之前对其进行验证。

于 2010-01-28T11:41:57.570 回答