Возбуждается ошибка asyncpg при попытке достать из базы данных объект по полю

Я начал пользоваться фреймворком FastAPI и подключил к нему SQLAlchemy, что в общем-то и не очень радует потому что я не люблю подключать к своему коду лишние абстракции, но исходя из мнений в интернете и того, что сами создатели фреймворка в примерах рекомендуют эту ORM решил все-таки воспользоваться ей.

Ошибка следующая:

asyncpg.exceptions.DataError: invalid input for query argument $1: '[email protected]' (a bytes-like object is required, not 'str')

Файл db.py пакета storage:

from databases import Database
import sqlalchemy

address = ""

storage = Database(address)

metadata = sqlalchemy.MetaData()

consumers = sqlalchemy.Table(
    "consumers",
    metadata,
    sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column("first_name", sqlalchemy.String),
    sqlalchemy.Column("last_name", sqlalchemy.String),
    sqlalchemy.Column("email", sqlalchemy.String, unique=True),
    sqlalchemy.Column("password", sqlalchemy.String)
)

engine = sqlalchemy.create_engine(address)

metadata.create_all(engine)

Мой код получения, размещенный в пакете storage в файле utils.py:

from .db import consumers, storage

async def get_user_by_email(email: str):
    return await storage.fetch_one(
        consumers.select().where(consumers.c.email == email)
    )

Файл models.py из пакета authentication:

from pydantic import BaseModel, EmailStr


class CreateConsumer(BaseModel):
    email:            EmailStr
    first_name:       str
    last_name:        str
    password:         str
    confirm_password: str

Файл routes.py из пакета authentication:

from fastapi import APIRouter
from .models import CreateConsumer
from storage.utils import get_user_by_email

authentication = APIRouter()


@authentication.post('/sign-up')
async def sign_up(user: CreateConsumer):
    if await get_user_by_email(user.email):
        pass

Ответы (1 шт):

Автор решения: Crazy Theory

Решил проблему заменив поле email в таблице text'ом вместо char'а. Видимо какое-то несоответствие в типах данных происходило.

→ Ссылка