Python 无法在数据存储中检索具有生成id的实体
我以一种非常简单的方式使用Google云数据存储,并尝试通过其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
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中传递的参数)