Оптимизация производительности Strawberry GraphQL API: как обойти создание экземпляра объекта для предварительно отформаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Оптимизация производительности Strawberry GraphQL API: как обойти создание экземпляра объекта для предварительно отформа

Сообщение Anonymous »

Я разрабатываю API GraphQL с использованием Strawberry и FastAPI, где я напрямую извлекаю и преобразую данные из базы данных PostgreSQL в JSON, отформатированный в соответствии со схемой GraphQL.
Извлечение данных выполняется с помощью SQL-запросов, которые используют выбранные поля, а также возможности PostgreSQL JSON, что позволяет формировать данные именно так, как необходимо для ответа GraphQL.
Моя цель сейчас — обойти Проверка объекта Python в Strawberry для этого предварительно отформатированного JSON для повышения производительности.
В моей текущей настройке у меня есть различные типы GraphQL, определенные в Strawberry, похожие на следующие:

Код: Выделить всё

import strawberry

@strawberry.type
class Player:
name: str
age: int
# ... more fields ...

@strawberry.type
class Team:
city: str
players: list[Player]
У меня есть преобразователи, которые должны возвращать экземпляры этих типов. Однако, учитывая, что данные, полученные из PostgreSQL, уже структурированы соответствующим образом (благодаря функциям формирования JSON SQL), я ищу способ обойти преобразование и проверку этих объектов JSON в экземпляры Strawberry.
Пример структуры преобразователя:

Код: Выделить всё

@strawberry.type
class Query:
@strawberry.field
def teams_with_player(self, info) -> list[Team]:
formatted_json = query_postgresql_for_formatted_json(info.selected_fields)
# The above function returns JSON directly in the structure expected by the GraphQL schema
return formatted_json
Функция query_postgresql_for_formatted_json извлекает данные JSON для согласования со схемой GraphQL и выбранными полями.
например, с помощью следующего запроса:
п>

Код: Выделить всё

query {
teamsWithPlayer {
city
players {
name
}
}
}
функция анализирует выбранные поля, и база данных возвращает следующие данные:

Код: Выделить всё

[
{
"city": "Abuja",
"players": [
{"name": "Player1"},
{"name": "Player2"}
]
},
{
"city": "Djakarta",
"players": [
{"name": "Player3"},
{"name": "Player4"}
]
}
// ... more teams ...
]
как мне вернуть этот json без создания экземпляров объектов Strawberry?

Подробнее здесь: https://stackoverflow.com/questions/776 ... stantiatio
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»