CSV 数据到 GraphQL 架构
CSV data to GraphQL schema
我有不同 headers 的 CSV 数据。我事先不知道这些headers。如何将此数据转换为 GraphQL 模式?
示例查询:
csvData(supplierId: $supplierId) {
columns {
id
}
rows {
id
columns {
id
value
}
}
}
我希望能够查询文件中的列和文件中的行。
预期查询结果:
列:{id: 0, value: Name} {id: 1, value: Age}, {id: 2, value: Location}
行数:{id: 0, columns: {id: 0, value: Mary}}, {id: 0, columns: {id: 1, value: 21}, {id: 0, columns: {id: 2, value: NYC}}
使用石墨烯的示例类型:
class Columns(object):
id: int = Int(required=True)
value: str = String(required=True)
class Rows(object):
id: int = Int(required=True)
columns: Columns = Columns(required=True)
当您事先不知道 graphQL 中的结构时,可以使用列表结构作为变通方法。 CSV文件是行的列表,一行是键值对。
首先定义结构中每个单元格的值,如下所示:
class ColumnValueType(graphene.ObjectType):
column_name = graphene.String(required=True) # this is column heading
value = graphene.String(required=True) # you don't know the value type you have to assume string
然后将您的行定义为列值列表
class RowType(graphene.ObjectType):
row = graphene.List(ColumnValueType)
和 CSV 数据作为行列表:
class CSVDataType(graphene.ObjectType):
rows = graphene.List(RowType)
这有点笨拙,但像这样的东西应该能够保存 CSV 文件的全部内容。希望这为您指明了如何为查询结果填充这样的结构的正确方向。
我有不同 headers 的 CSV 数据。我事先不知道这些headers。如何将此数据转换为 GraphQL 模式?
示例查询:
csvData(supplierId: $supplierId) {
columns {
id
}
rows {
id
columns {
id
value
}
}
}
我希望能够查询文件中的列和文件中的行。
预期查询结果:
列:{id: 0, value: Name} {id: 1, value: Age}, {id: 2, value: Location}
行数:{id: 0, columns: {id: 0, value: Mary}}, {id: 0, columns: {id: 1, value: 21}, {id: 0, columns: {id: 2, value: NYC}}
使用石墨烯的示例类型:
class Columns(object):
id: int = Int(required=True)
value: str = String(required=True)
class Rows(object):
id: int = Int(required=True)
columns: Columns = Columns(required=True)
当您事先不知道 graphQL 中的结构时,可以使用列表结构作为变通方法。 CSV文件是行的列表,一行是键值对。
首先定义结构中每个单元格的值,如下所示:
class ColumnValueType(graphene.ObjectType):
column_name = graphene.String(required=True) # this is column heading
value = graphene.String(required=True) # you don't know the value type you have to assume string
然后将您的行定义为列值列表
class RowType(graphene.ObjectType):
row = graphene.List(ColumnValueType)
和 CSV 数据作为行列表:
class CSVDataType(graphene.ObjectType):
rows = graphene.List(RowType)
这有点笨拙,但像这样的东西应该能够保存 CSV 文件的全部内容。希望这为您指明了如何为查询结果填充这样的结构的正确方向。