Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么可以';我不能按用户属性查询吗?_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 为什么可以';我不能按用户属性查询吗?

Python 为什么可以';我不能按用户属性查询吗?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我有一个应用程序,用所有者的电子邮件存储实体。My models.py的外观如下所示: from google.appengine.ext import db from google.appengine.api import users class GenericModel(db.Model): '''GenericModel is inherited by other model definitions.''' DateAdded = db.DateTimeProperty(

我有一个应用程序,用所有者的电子邮件存储实体。My models.py的外观如下所示:

from google.appengine.ext import db
from google.appengine.api import users

class GenericModel(db.Model):
    '''GenericModel is inherited by other model definitions.'''
    DateAdded = db.DateTimeProperty(auto_now_add = True)
    owner = db.UserProperty()

class CASentry(GenericModel):
    description = db.TextProperty()
    date = db.DateProperty()
    hours = db.FloatProperty()
    location = db.StringProperty()
test@example.com
[<models.CASentry object at 0x123456>]
当我从开发服务器上的交互式控制台运行此命令时:

from google.appengine.ext import db
t = db.GqlQuery('''SELECT * FROM CASentry''').fetch(1)[0]
print t.owner

t = db.GqlQuery('''SELECT * FROM CASentry where owner = 'test@example.com' ''').fetch(1)
print t
我明白了:

test@example.com
[]
我觉得我期待着这样的事情:

from google.appengine.ext import db
from google.appengine.api import users

class GenericModel(db.Model):
    '''GenericModel is inherited by other model definitions.'''
    DateAdded = db.DateTimeProperty(auto_now_add = True)
    owner = db.UserProperty()

class CASentry(GenericModel):
    description = db.TextProperty()
    date = db.DateProperty()
    hours = db.FloatProperty()
    location = db.StringProperty()
test@example.com
[<models.CASentry object at 0x123456>]
test@example.com
[]

有人看到我的代码有问题吗?

您应该提供
用户
而不是字符串:

t = db.GqlQuery("SELECT * FROM CASentry where owner = :owner", owner=User(email="test@example.com")).fetch(1)

您可以在GQL中直接转换为用户:

SELECT * FROM CASentry where owner = USER('test@example.com')