2010-01-28 64 views
3

我想检查一个电子邮件是否在我的Appengine数据库中,如果没有:然后将其输入到数据存储。如何将项目输入到Google AppEngine Datastore?

我是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) 

回答

6

结合的一个参数查询时,您不需要使用引号:

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

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

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

+0

谢谢你,tomlog。谢谢。你是一名专家级的python/gae程序员... – chris 2010-01-28 11:46:32

相关问题