我有一个 mysql 表,我想使用 graphQL 来表示,我尝试过使用 ariandne 来表示, 我能够得到行。 现在,我还想介绍一下 where 子句的功能,一种方法可能是为每个列都有一个解析器,但这有其局限性,并且不能随着列的增加而扩展, 你能建议一下吗?
我的代码:
class SSREvent(TypedDict):
event_id: int
start_date_time: datetime
start_date_time_UTC: datetime
epg_num: str
duration: timedelta
end_date_time: datetime
end_date_time_UTC: datetime
prog_name: str
def all_ssr_events() -> List[SSREvent]:
connection = mysql.connector.connect(**DB_CONFIG)
try:
with connection.cursor(dictionary=True) as cursor:
query = f"SELECT * FROM SSR_EVENTS"
cursor.execute(query)
data = cursor.fetchall()
result = [SSREvent(**i) for i in data]
return result
except Exception as e:
return e
finally:
connection.close()
EVENT_TYPEDEF = """
scalar GraphQLDateTime
scalar GraphQLDate
scalar GraphQLTime
type SSREvent {
event_id : Int!
start_date_time : GraphQLDateTime!
start_date_time_UTC : GraphQLDateTime!
epg_num : String!
duration : String!
end_date_time : GraphQLDateTime!
end_date_time_UTC : GraphQLDateTime!
prog_name : String!
}
"""
ssr_event_query = ObjectType("SSREvent")
@query.field("ssr_events")
def resolve_ssr_events(_, info: GraphQLResolveInfo) -> list[SSREvent]:
data: list[SSREvent] = all_ssr_events()
return data
这是 ariande 库,我需要更改它还是什么? 我需要根据一列或多列过滤结果,这一功能类似于sql中的where子句
执行此操作的方法是在查询解析器中,而不是在字段级解析器中。查询解析器将负责处理 where
子句并从数据库中选择适当的记录。如果查询返回所有字段,那么您甚至不需要字段级解析器,因为所有字段都将由查询解析器
解析。