我要检查电子邮件是否在我的AppEngine数据库,如果没有:然后将其输入到数据存储。

我是新来的蟒蛇。 为什么不工作这个简单的代码?(另外如果写这个更好的方式/更有效的方式,请告诉我)

(I得到错误: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)
有帮助吗?

解决方案

您不绑定的参数查询时需要使用引号:

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

否则它会读取它作为一个字符串,实际上只返回有:1作为其EMAILADDRESS值对象。

此外,确保你将其插入查询之前验证用户的输入(self.request.get('emailaddress'))。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top