Google App Engine数据存储区查询返回对象的内存位置而不是实际项目(Python 2.7)

时间:2013-05-09 06:18:06

标签: python google-app-engine google-cloud-datastore

我正在尝试查询数据库以验证用户名是否已存在。

模型定义是:

    class UserAccounts(db.Model):
        username = db.StringProperty(required=True)
        password = db.StringProperty(required=True)
        email = db.StringProperty()

我从注册表单中获取用户名,并按如下方式查询用户名:

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

我正在尝试比较query == username是否始终失败。经过调查,我发现查询对象只是返回一个内存地址而不是存储在该位置的字符串<main.UserAccounts object at 0x10433b990>,我不明白为什么。在同一个应用程序中,我有另一个模型,我正在查询并使用循环来查看对象并检索项目,并且工作正常。我使用的是Python 2.7和GAE SDK 1.8。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

它没有返回内存地址,它正在返回对象,并且您正在显示其默认表示。您可以使用通常的点表示法访问其字段,也可以定义__unicode__方法来定义默认的字符串表示形式。