Python&;Graphene:PropertyType字段必须是映射(dict/ORDEREDICT)
我正在数据库上构建一个GraphQL服务,该服务返回有关匹配属性的信息。 DB查询可以为空,返回一个或多个条目 属性本身封装在相应的类和类型中: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(
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.