如何使用 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'}
我有一个像下面这样的实体..
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'}