如何在Google AppEngine数据存储中输入项目?

chr*_*ris 3 python google-app-engine gql

我想检查一下电子邮件是否在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()
Run Code Online (Sandbox Code Playgroud)

作为参考,这是我的db类:

class EmailDatabase(db.Model):
     emailaddress = db.StringProperty()
     date = db.DateTimeProperty(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

Tom*_*ort 6

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

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

否则它会将其作为字符串读取,实际上只返回具有:1emailaddress值的对象.

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