Graphql:在 python 中使用 graphql 来显示 Mysql DB

问题描述 投票:0回答:1

我有一个 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子句

python graphql graphene-python strawberry-graphql ariadne-graphql
1个回答
0
投票

执行此操作的方法是在查询解析器中,而不是在字段级解析器中。查询解析器将负责处理 where 子句并从数据库中选择适当的记录。如果查询返回所有字段,那么您甚至不需要字段级解析器,因为所有字段都将由查询解析器

解析

© www.soinside.com 2019 - 2024. All rights reserved.