FastAPI выдает ошибку с моделью данных sqlalchemy из-за сбоя проверки PydanticPython

Программы на Python
Ответить
Гость
 FastAPI выдает ошибку с моделью данных sqlalchemy из-за сбоя проверки Pydantic

Сообщение Гость »


Я пишу небольшое веб-приложение с FastAPI v0.103.1 и sqlalchemy v2.0.21. Когда я запускаю код, я получаю ошибку FAstAPIError:

fastapi.Exceptions.FastAPIError: неверные аргументы для поля ответа! Подсказка: убедитесь, что является допустимым типом поля Pydantic. Если вы используете аннотацию возвращаемого типа, которая не является допустимым полем Pydantic (например, Union[Response, dict, None]), вы можете отключить создание модели ответа из аннотации типа с помощью параметра декоратора операции пути response_model=None. Подробнее: https://fastapi.tiangolo.com/tutorial/response-model/

Моя база данных.py:

из импорта sqlalchemy create_engine из sqlalchemy.orm import declarative_base, sessionmaker SQLALCHEMY_DATABASE_URL = "postgresql://postgres:postgres@localhost/fastapi" двигатель = create_engine (SQLALCHEMY_DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False,bind=engine) База = декларативная_база() models.py:

из базы импорта .database из импорта sqlalchemy Столбец, целое число, строка, логическое значение, TIMESTAMP, текст Сообщение класса (База): __tablename__ = "сообщения" id = Столбец (Целое число, основной_ключ = Истина, значение nullable = Ложь, индекс = Истина) заголовок = Столбец (Строка (50), значение nullable = False) содержимое = Столбец (Строка (500), значение NULL = False) опубликовано = Столбец (логическое значение, server_default = «ИСТИНА», nullable = False) создано_at = Столбец( TIMESTAMP(часовой пояс=True), nullable=False, server_default=text("сейчас()") ) app.py:

@app.post("/posts", response_model=List[schemas.Post]) def create_posts(post: models.Post, db: Session = Depends(get_db)): ## Реализация ORM (без SQL) new_post = models.Post(**post.model_dump()) db.add(новое_пост) БД.коммит() db.refresh(новое_пост) вернуть {"данные": new_post} Что я делаю не так?

Я добавил request_model в маршрут: @app.post("/posts", response_model=List[schemas.Post])

Я добавил файл Schemas.py с той же моделью Pydantic:

от даты импорта datetime из pydantic импорта BaseModel сообщение класса (BaseModel): идентификатор: интервал Название: ул. содержание: ул. опубликовано: bool создано_at: дата Конфигурация класса: orm_mode = Истина Оба шага не решили проблему.
Ответить

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

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

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

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

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