如何使用 python3 在数据存储中获取实体键(父名称和自定义名称)

How to get entity keys(parent and custom name) in datastore using python3

我有一个像下面这样的实体..

 Name/ID                   Parent                    Rollen               email          first_name      last_name
name=CidassUID  Key(Tenant, 'CidassGroupID')    ["user","admin"]    user@email.com  user first name user last name  

例如,现在我想查询其电子邮件 = user@email.com 的数据并获取实体密钥(id 和 parent).. 我现在在 python 中写的是

from google.cloud import datastore
def create_client(project_id):
    return datastore.Client(project_id)
def list_user(client):
    query = client.query(kind='User')
    query.add_filter('email','=','user@email.com')
    l=query.fetch()
    l=list(l)
    print(l)

现在它给我的回复是

[<Entity('Tenant', 'CidassGroupID', 'User', 'CidassUID') {'first_name': 'user first name', 'last_name': 'user last name', 'email': 'user@email.com', 'Rollen': ['user', 'admin']}>]

如果我将它转换成字典

for entity in l:
    a=entity
d=dict(a)
print(d)

它显​​示这样的输出并删除实体..

{'first_name': 'user first name', 'last_name': 'user last name', 'email': 'user@email.com', 'Rollen': ['user', 'admin']}

如何获取实体键,例如('Tenant', 'CidassGroupID') ('User', 'CidassUID') 来自这个回复?

非常感谢!

这似乎有效...我还没有用实际的 google api 测试过它,但它的功能应该相同...

d = dict(l[0])
keys = l[0].key.flat_path

new = {keys[i]:keys[i+1] for i in range(0, len(keys), 2)}
d.update(new)

print(d)

输出:

{'first_name': 'user first name', 'last_name': 'user last name', 'email': 'user@email.com', 'Rollen': ['user', 'admin'], 'Tenant': 'CidassGroupID', 'User': 'CidassUID'}