使用GraphQL在Python中过滤JSON数据

问题描述

我在python项目中使用的是官方graphene软件包。我有一个巨大的嵌套JSON数据,这些数据来自运行中的Docker容器检查命令,我想从中获取一些字段。我可以分别选择所有这些字段,然后将它们添加到字典中,如下所示:

def ContainerConfigs(configs):
    data = {}
    data['Command'] = configs['Args'][-1]
    data['Hostname'] = configs['Config']['Hostname']
    data['Image'] = configs['Config']['Image']
    data['Distro'] = configs['Config']['Labels']['org.label-schema.name']
    data['WorkDir'] = configs['Config']['WorkingDir']
    data['IPAddress'] = configs['NetworkSettings']['Networks']['bridge']['IPAddress']

    return data

但这是一个很弱的解决方案。我认为可以使用GraphQL对其进行优化。没有服务器,请求和响应。我想创建其Schema类并发送参数(JSON和Query),然后让该函数执行该查询并返回结果。像这样:

import graphene

# I need to find this part of the code
# class Schema(..):
#     ...
# class Query(...):
#     ...

def ContainerConfigs(configs,query):
    schema = graphene.Schema(query=Query)
    # I need to find a way to pass the configs (Json data) to the Query class to
    # execute the query_string on the data
    query_string = """
    query {
        Args
        Config {
            Hostname
            Image
            WorkingDir
            Label{
                org.label-schema.name
            }
        }
        NetworkSettings{
            Networks{
                bridge{
                    IPAddress
                }
            }
        }
    }
    """
    result = schema.execute(query_string)
    
    return result

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)