Как использовать типы Pydantic с sqlalchemy и asyncpgPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать типы Pydantic с sqlalchemy и asyncpg

Сообщение Anonymous »

Использование: Sqlalchemy 1.4 и Pydantic v1
Sqlalchemy + запрос asyncpg:

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

async def get_api_key(
db_session: AsyncSession,
api_key_id: ApiKeyId,
) -> ApiKey | None:
if api_key_id is None and auth0_id is None:
return None
result = await db_session.execute(
select(ApiKey).filter(ApiKey.id == api_key_id,)
)
return result.scalar_one_or_none()
Модель Sqlalchemy:

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

class ApiKey(Base):
id: Column = Column(
UUID(as_uuid=True),
primary_key=True,
)
Пидантические модели:

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

class ApiKeyId(ConstrainedStr):
# Validate value here

class ApiKey(BaseModel):
api_key_id: ApiKeyId
При использовании psycopg2 это работает отлично, но при использовании asyncpg возникает следующая ошибка: error = DataError('неверный ввод для аргумента запроса $1: ApiKeyId (abcdefgh... (Ожидается юникод, получен ApiKeyId)')
Самое простое решение — просто добавить str() в ApiKey.id в запросе. Однако есть ли лучший способ сделать это?

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

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

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

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

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

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

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