如何将 Graphql 查询转换为 python 字典?

Posted

技术标签:

【中文标题】如何将 Graphql 查询转换为 python 字典?【英文标题】:How to convert Graphql query to a python dictionary? 【发布时间】:2021-08-21 18:59:06 【问题描述】:

我有一个从 monday.com 网站得到的查询。我正在尝试获取受人尊敬的董事会的列值,并尝试将这些值放入 python 字典中,以便稍后我可以使用某些条件进行迭代并将值更新回网站。 根据 API(Monday.com 和 GraphQL)给出的说明,我运行了这个查询来获取板的列值,但我未能将其转换为 python 字典。请帮忙! 这是我在 Graph QL API Playground 上写的查询代码:

  boards(ids: 1348913462) 
    items(limit: 50) 
      id
      column_values(ids: "pratica_cliente") 
        value
      
    
  

现在为了将其转换为字典,我运行了以下代码:

contents=[]
try:
    with open("./r.json", 'r') as f:
        contents =json.load(r)
except Exception as e:
    print(e)

print(contents[:]["value"])

li = [item.get('column_values') for item in contents]
print(li)

我得到的错误是:

[Errno 2] 没有这样的文件或目录:'./r.json' 回溯(最近一次通话最后): 第 31 行,在 打印(内容[:][“值”]) TypeError: 列表索引必须是整数或切片,而不是 str

它将整个 JSON 文件作为输出返回给我,但我打算让它成为一个 python 字典,例如:

dict = id:value,
        id2:value2....and so on

是的,我在堆栈、谷歌和其他地方搜索了很多,所以一些代码也是从几个地方获取的。

【问题讨论】:

【参考方案1】:

这行不通,因为您没有指向json.load 的变量“r”。

    with open("./r.json", 'r') as f:
        contents =json.load(r)

显然“./r.json”不是文件。所以contents 永远是[]

然后您尝试使用字符串访问列表中的内容。

这就是您看到这些错误的原因。不言自明。

【讨论】:

以上是关于如何将 Graphql 查询转换为 python 字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何将graphQl查询中的变量转换为内联样式或样式组件中的伪元素

将 json 转换为石墨烯 graphql 响应

将json转换为石墨烯graphql响应

将嵌套查询从 GraphQL 转换为 Graphene 不起作用

有没有办法将 Java 服务器中的 GraphQL 查询转换为 SPARQL 查询?

将 SqlAlchemy group_by/func 查询转换为 GraphQL