FastAPI выдает ошибку с моделью данных sqlalchemy из-за сбоя проверки Pydantic ⇐ 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 = Истина Оба шага не решили проблему.
Я пишу небольшое веб-приложение с 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 = Истина Оба шага не решили проблему.
Мобильная версия