我想检查一下电子邮件是否在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()
作为参考,这是我的db类:
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’)).