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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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和ndb模型循环以下数据存储数据并返回到json.dumps?_Python_Google App Engine_Key_Entity_Datastore - Fatal编程技术网

如何使用python和ndb模型循环以下数据存储数据并返回到json.dumps?

如何使用python和ndb模型循环以下数据存储数据并返回到json.dumps?,python,google-app-engine,key,entity,datastore,Python,Google App Engine,Key,Entity,Datastore,我设法使用Python从Google App Engine数据存储中查询上述数据,但无法将其循环到JSON中。我不太理解钥匙的概念,即使我已经看过文件了 除了希望了解如何无限制地将带有键的整个对象转储到JSON中之外,我还知道如何提取“键”(字符串)、“电子邮件”和“创建的”(日期时间)?顺便说一下,我正在尝试检索所有数据 例如: [User(key=Key('User', 5275456790069248), auth_ids=[u'abc@gmail.com'], created=datet

我设法使用Python从Google App Engine数据存储中查询上述数据,但无法将其循环到JSON中。我不太理解钥匙的概念,即使我已经看过文件了

除了希望了解如何无限制地将带有键的整个对象转储到JSON中之外,我还知道如何提取“键”(字符串)、“电子邮件”和“创建的”(日期时间)?顺便说一下,我正在尝试检索所有数据

例如:

[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')]

NDB中的
是一个python类实例(一个对象),在json中没有正确序列化。但是它附带了
.urlsafe()
方法,将其转换为可以被json转储的字符串。发件人:

您还可以使用实体的密钥来获取合适的编码字符串 要嵌入URL,请执行以下操作:

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)
这会产生一个类似于agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM的结果,它可以 稍后将用于重建密钥并检索原始实体:

url_string = sandy_key.urlsafe()

现在,要对整个实体进行json编码,您必须先编写一个自定义方法,将
属性转换为字符串。请参阅您使用的是哪个数据存储库?最好也显示代码。通常键是一个对象,可能无法正确序列化。有些库提供了将键编码为字符串的方法。没有sql和NDB模式谢谢!以前走错了方向。我刚才在看key类文档:这将返回id,id=sandy_key.id(),请注意,如果使用id,它们不会保留祖先信息,因此它们仅在具有相同父密钥(或没有父密钥)的实体中是唯一的。要重新构造原始实体键,需要其父键。密钥urlsafe字符串包含整个祖先。如果不使用实体祖先,这不是问题。需要注意的一点是,url安全密钥还包括应用id,因此如果要将数据传输到另一个应用,它可能无法按预期工作。该类也是密钥的一部分,因此您不能拥有具有相同密钥的其他类型的对象。但是他们可以有相同的ID。
sandy_key = ndb.Key(urlsafe=url_string)