Python BigQuery数据集如何从Dataset.AccessEntry中删除角色

Python BigQuery数据集如何从Dataset.AccessEntry中删除角色,python,google-bigquery,Python,Google Bigquery,我知道使用Google客户端库(dataset.AccessEntry),我们可以将角色更新为请求用户()的特定数据集。但是想知道当角色发生变化(从读卡器到写卡器/所有者等)时,如何删除该访问权限 我想自动执行此删除操作,如角色、数据集名称和电子邮件作为输入来自UI,python代码应将角色更新为特定请求的数据集。感谢您的帮助。我可以使用remove()方法从dataset.AccessEntry中删除条目,该方法从Python列表中删除第一个匹配元素(作为参数传递)。您需要为要删除的相应条目指

我知道使用Google客户端库(dataset.AccessEntry),我们可以将角色更新为请求用户()的特定数据集。但是想知道当角色发生变化(从读卡器到写卡器/所有者等)时,如何删除该访问权限


我想自动执行此删除操作,如角色、数据集名称和电子邮件作为输入来自UI,python代码应将角色更新为特定请求的数据集。感谢您的帮助。

我可以使用
remove()
方法从
dataset.AccessEntry
中删除条目,该方法从Python列表中删除第一个匹配元素(作为参数传递)。您需要为要删除的相应条目指定
项目
数据集名称
角色
实体类型
实体id

from google.cloud import bigquery
from google.cloud.bigquery.dataset import DatasetReference

PROJECT='<PROJECT_NAME>'

bq = bigquery.Client(project=PROJECT)
dsinfo = bq.get_dataset("<DATASET_NAME>")

#Specify the entry that will loose access to a dataset
entry = bigquery.AccessEntry(
    role="<ROLE>",
    entity_type="<ENTITY_TYPE>",
    entity_id="<EMAIL>",
)

if entry in dsinfo.access_entries:
    entries = list(dsinfo.access_entries)
    entries.remove(entry)
    dsinfo.access_entries = entries
    dsinfo = bq.update_dataset(dsinfo, ["access_entries"])
else:
    print("Entry wasn't found in dsinfo.access_entries")

print(dsinfo.access_entries)
从google.cloud导入bigquery
从google.cloud.bigquery.dataset导入DatasetReference
项目=“”
bq=bigquery.Client(project=project)
dsinfo=bq.get\u数据集(“”)
#指定将失去对数据集访问权限的条目
entry=bigquery.AccessEntry(
角色=”,
实体类型=”,
实体_id=“”,
)
如果在dsinfo.access\u条目中输入:
条目=列表(dsinfo.access\u条目)
条目。删除(条目)
dsinfo.access\u entries=条目
dsinfo=bq.update_数据集(dsinfo,[“访问_条目”])
其他:
打印(“在dsinfo.access\u条目中找不到条目”)
打印(dsinfo.access\u条目)
你可以找到google.cloud.bigquery.dataset.AccessEntry的官方文档

是的,remove()方法对我很有效!!!我真的不知道AccessEntry有列表类型。谢谢你的帮助。