Как сериализовать list[sqlalchemy.engine.row.Row] в Pydantic v2?

Для сериализации списка объектов SQLAlchemy Row в Pydantic v2, нужно выполнить несколько шагов.

1. Создайте модель Pydantic для представления данных, которые вы хотите сериализовать. Эта модель будет иметь поля, соответствующие атрибутам объекта Row.

from pydantic import BaseModel

class MyModel(BaseModel):
    id: int
    name: str
    # добавьте другие поля здесь

2. Создайте функцию, которая будет конвертировать объект Row в экземпляр модели Pydantic.

from sqlalchemy.engine.row import Row

def convert_to_model(row: Row) -> MyModel:
    return MyModel(**row)

3. Создайте функцию, которая будет сериализовать список объектов Row в список экземпляров модели Pydantic.

from typing import List

def serialize_rows(rows: List[Row]) -> List[MyModel]:
    return [convert_to_model(row) for row in rows]

4. Протестируйте сериализацию, передав список объектов Row в функцию serialize_rows.

rows = [
    Row(id=1, name="John"),
    Row(id=2, name="Jane"),
    # добавьте другие объекты Row здесь
]

serialized_data = serialize_rows(rows)
print(serialized_data)

В результате вы получите список экземпляров модели Pydantic, который можно использовать для дальнейшей обработки или передачи по сети.

Обратите внимание, что в этом примере мы предполагаем, что объекты Row имеют атрибуты с такими же именами, как поля в моделе Pydantic. Если имена атрибутов различаются, вам придется внести соответствующие изменения в функцию convert_to_model.