Python 无法在数据存储中检索具有生成id的实体

Python 无法在数据存储中检索具有生成id的实体,python,google-cloud-datastore,app-engine-ndb,Python,Google Cloud Datastore,App Engine Ndb,我以一种非常简单的方式使用Google云数据存储,并尝试通过其id检索实体 我的实体的定义如下: class Logs(ndb.Model): startDate = ndb.DateTimeProperty() endDate = ndb.DateTimeProperty() requestedDate = ndb.DateProperty() taskName = ndb.StringProperty() status = ndb.StringProp

我以一种非常简单的方式使用Google云数据存储,并尝试通过其id检索实体

我的实体的定义如下:

class Logs(ndb.Model):
    startDate = ndb.DateTimeProperty()
    endDate = ndb.DateTimeProperty()
    requestedDate = ndb.DateProperty()
    taskName = ndb.StringProperty()
    status = ndb.StringProperty()
然后当我插入一个新的

logs = Logs(startDate=datetime.utcnow(),
                taskName=taskName,
                requestedDate=requestedDate,
                status=u'IN_PROGRESS')

key = logs.put()
id = key.id() # I use this variable later
当我想取回它的时候

logs = Logs.get_by_id(id)
但它从不返回任何实体

这个怎么了

感谢您的帮助根据,您应该能够直接从键对象调用get(),从数据存储中检索实体:

logs\u entity=logs(startDate=datetime.utcnow(),
taskName=taskName,
requestedDate=requestedDate,
状态=正在进行中)
#将实体保存到数据存储并返回密钥
entity\u key=logs\u entity.put()
#使用上一个键从数据存储中检索实体
结果=实体_key.get()
编辑:

如果以后需要将密钥作为字符串传递以重新生成密钥对象,可以尝试使用urlsafe()方法,该方法允许将其嵌入URL:

urlsafe\u string=entity\u key.urlsafe()
[...]
实体\u key=ndb.key(urlsafe=urlsafe\u字符串)
logs\u entity=entity\u key.get()

你说得对。忘了提到,在我将实体放入数据存储和检索它之间,我需要一个字符串化的id(因为它是在URL中传递的参数)