如何将项目写入Google AppEngine Datastore?

3 投票
1 回答
652 浏览
提问于 2025-04-15 18:35

我想检查一个邮箱是否在我的Appengine数据库里,如果没有的话,就把它放进数据存储中。

我刚开始学Python。

为什么这段简单的代码不管用呢?(如果有更好的方法或者更高效的写法,请告诉我。)

(我遇到了这个错误:BadArgumentError: Unused positional arguments [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)

1 个回答

6

在把参数绑定到查询的时候,你不需要加引号:

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

否则系统会把它当成字符串,只会返回那些邮箱地址值为 :1 的对象。

另外,确保在把用户输入的内容(self.request.get('emailaddress'))放进查询之前,先进行验证。

撰写回答