如何使用 python 和 ndb 模型和 return 循环以下数据存储数据到 json.dumps?
How to loop the following datastore data with python and ndb model and return to json.dumps?
[User(key=Key('User', 5275456790069248), auth_ids=[u'abc@gmail.com'], created=datetime.datetime(2017, 8, 29, 22, 50, 36, 297407), email='abc@gmail.com'),
User(key=Key('User', 5838406743490560), auth_ids=[u'def@gmail.com'], created=datetime.datetime(2017, 8, 29, 16, 23, 16, 406468), email='def@gmail.com'),
User(key=Key('User', 6401356696911872), auth_ids=[u'ghi@gmail.com'], created=datetime.datetime(2017, 8, 30, 12, 34, 51, 816926), email='ghi@gmail.com')]
我设法使用 Python 从 Google App Engine 数据存储中查询了上述数据,但我无法将其循环到 JSON。即使我已经阅读了文档,也不太了解密钥的概念。
除了希望了解将整个对象和密钥无限制地转储到 JSON 中的方法外,知道我怎么能只提取 'key'(字符串),'email' 和 'created'(日期时间)?顺便说一句,我正在尝试检索所有数据。
例如:
users_new_list = []
allusers = User.query().fetch()
for user in all_users:
#How to get key in string and pass into 'users_new_list'
users_new_list.append(keyString)
NDB 中的 Key
是一个 python class 实例(一个对象),它在 json 中没有正确序列化。但它带有 .urlsafe()
方法,将其转换为可以 json-dumped 的字符串。来自 Retrieving Entities from Keys:
You can also use an entity's key to obtain an encoded string suitable
for embedding in a URL:
url_string = sandy_key.urlsafe()
This produces a result like agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM which can
later be used to reconstruct the key and retrieve the original entity:
sandy_key = ndb.Key(urlsafe=url_string)
现在,要对整个实体进行 json 编码,您必须编写一个自定义方法,该方法首先将 Key
属性转换为字符串。参见 How to make a class JSON serializable
[User(key=Key('User', 5275456790069248), auth_ids=[u'abc@gmail.com'], created=datetime.datetime(2017, 8, 29, 22, 50, 36, 297407), email='abc@gmail.com'),
User(key=Key('User', 5838406743490560), auth_ids=[u'def@gmail.com'], created=datetime.datetime(2017, 8, 29, 16, 23, 16, 406468), email='def@gmail.com'),
User(key=Key('User', 6401356696911872), auth_ids=[u'ghi@gmail.com'], created=datetime.datetime(2017, 8, 30, 12, 34, 51, 816926), email='ghi@gmail.com')]
我设法使用 Python 从 Google App Engine 数据存储中查询了上述数据,但我无法将其循环到 JSON。即使我已经阅读了文档,也不太了解密钥的概念。
除了希望了解将整个对象和密钥无限制地转储到 JSON 中的方法外,知道我怎么能只提取 'key'(字符串),'email' 和 'created'(日期时间)?顺便说一句,我正在尝试检索所有数据。
例如:
users_new_list = []
allusers = User.query().fetch()
for user in all_users:
#How to get key in string and pass into 'users_new_list'
users_new_list.append(keyString)
NDB 中的 Key
是一个 python class 实例(一个对象),它在 json 中没有正确序列化。但它带有 .urlsafe()
方法,将其转换为可以 json-dumped 的字符串。来自 Retrieving Entities from Keys:
You can also use an entity's key to obtain an encoded string suitable for embedding in a URL:
url_string = sandy_key.urlsafe()
This produces a result like agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM which can later be used to reconstruct the key and retrieve the original entity:
sandy_key = ndb.Key(urlsafe=url_string)
现在,要对整个实体进行 json 编码,您必须编写一个自定义方法,该方法首先将 Key
属性转换为字符串。参见 How to make a class JSON serializable