Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python&;Graphene:PropertyType字段必须是映射(dict/ORDEREDICT)_Python_Graphql_Graphene Python - Fatal编程技术网

Python&;Graphene:PropertyType字段必须是映射(dict/ORDEREDICT)

Python&;Graphene:PropertyType字段必须是映射(dict/ORDEREDICT),python,graphql,graphene-python,Python,Graphql,Graphene Python,我正在数据库上构建一个GraphQL服务,该服务返回有关匹配属性的信息。 DB查询可以为空,返回一个或多个条目 属性本身封装在相应的类和类型中: class Property(graphene.ObjectType): PROPERTY_ID = graphene.Int() PROPERTY_TYPE = graphene.String() DATE_REPORTED = graphene.String() NO_OF_OWNERS = graphene.String(

我正在数据库上构建一个GraphQL服务,该服务返回有关匹配属性的信息。 DB查询可以为空,返回一个或多个条目

属性本身封装在相应的类和类型中:

class Property(graphene.ObjectType):
   PROPERTY_ID = graphene.Int()
   PROPERTY_TYPE = graphene.String()
   DATE_REPORTED = graphene.String()
   NO_OF_OWNERS = graphene.String()
   OWNER_FULL_NAME = graphene.String()
   ….

class PropertyType(graphene.ObjectType):
  class Meta:
    model = Property   
从数据库中提取是通过一个微小的util实现的,该util构建一个属性列表并返回该列表

def get_properties(address, full_name):
    query = qg.query_properties(address, full_name)
    extract = qm.run_query(query)
    prop_list = []

 for idx, row in extract.iterrows():
    prop_cash = extract.iloc[idx]['CASH_REPORTED']
    prop_id = extract.iloc[idx]['PROPERTY_ID']
    prop_type = extract.iloc[idx]['PROPERTY_TYPE']
    prop_date_rep = extract.iloc[idx]['DATE_REPORTED']
    prop_no_owners = extract.iloc[idx]['NO_OF_OWNERS']
    prop_owner_full_name = extract.iloc[idx]['OWNER_FULL_NAME']
    prop_owner_address = extract.iloc[idx]['OWNER_STREET_1']
    prop_owner_city = extract.iloc[idx]['OWNER_CITY']
    prop_owner_zip = extract.iloc[idx]['OWNER_ZIP']

    prop_list.append(Property(
        CASH_REPORTED=prop_cash,
        PROPERTY_ID=prop_id,
        PROPERTY_TYPE=prop_type,
        DATE_REPORTED=prop_date_rep,
        NO_OF_OWNERS=prop_no_owners,
        OWNER_FULL_NAME=prop_owner_full_name,
        OWNER_ADDRESS=prop_owner_address,
        OWNER_CITY=prop_owner_city,
        OWNER_ZIP=prop_owner_zip
    ))

return prop_list
该代码运行良好,并返回属性列表。当使用Graphene将该函数公开为GraphQL时,我在使用以下模式时遇到了一些问题: 进口石墨烯 类查询(graphene.ObjectType): 报告=graphene.Field(PropertyReport,地址=graphene.String(),全名=graphene.String()) properties=graphene.List(PropertyType,address=graphene.String(),full_name=graphene.String())

返回单个对象的属性报告解析器与GraphQL端点一样工作,我可以使用任何GraphQL客户端查询它

但是,属性解析程序不工作,并引发以下错误:

AssertionError: PropertyType fields must be a mapping (dict / OrderedDict) 
with field names as keys or a function which returns such a mapping.
如果我正确理解了错误,它只是说无论出于什么原因,它都无法映射每个对象中的对象属性字段

我很难理解石墨烯是如何处理物体集合的。文档中说,只需将其设为对象列表,因此我将属性声明为属性列表,但由于某些原因,解析器与之不匹配

我是否需要两个解析器,一个用于对象,一个用于列表

我不确定这里到底出了什么问题,但我感觉到我忽略了一些东西

多谢各位

AssertionError: PropertyType fields must be a mapping (dict / OrderedDict) 
with field names as keys or a function which returns such a mapping.