РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
690 of 711 menu

Исключение ArgumentError

Исключение ArgumentError наследуется от SQLAlchemyError и возбуждается, когда в функцию или метод библиотеки передан некорректный аргумент. Обычно это происходит, когда аргумент имеет неверный тип, недопустимое значение или вовсе не может быть обработан SQLAlchemy. Исключение не связано с ошибками базы данных - оно возникает ещё до отправки SQL-запроса.

Синтаксис

from sqlalchemy.exc import ArgumentError raise ArgumentError("message")

Пример

Давайте создадим движок с некорректным URL, который невозможно разобрать:

from sqlalchemy import create_engine from sqlalchemy.exc import ArgumentError try: engine = create_engine('not a valid url') except ArgumentError as exc: print(type(exc).__name__) print(exc)

Результат выполнения кода:

"ArgumentError" "Could not parse SQLAlchemy URL from string 'not a valid url'"

Пример

Давайте передадим в create_engine неверный тип аргумента - число вместо строки:

from sqlalchemy import create_engine from sqlalchemy.exc import ArgumentError try: engine = create_engine(123) except ArgumentError as exc: print(type(exc).__name__) print(exc)

Результат выполнения кода:

"ArgumentError" "Expected string or URL object, got 123"

Пример

Давайте попробуем создать модель с некорректным именем таблицы, передав в __tablename__ неверное значение:

from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column from sqlalchemy.exc import ArgumentError class Base(DeclarativeBase): pass try: class Article(Base): __tablename__ = None id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) except ArgumentError as exc: print(type(exc).__name__) print(exc)

Результат выполнения кода:

"ArgumentError" "Table None is already defined for this MetaData instance."

Пример

Давайте передадим в метод execute объект, который не является ни строкой, ни исполняемым выражением:

from sqlalchemy import create_engine from sqlalchemy.exc import ArgumentError engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: try: conn.execute(123) except ArgumentError as exc: print(type(exc).__name__) print(exc)

Результат выполнения кода:

"ArgumentError" "Executable expected, got 123"

Смотрите также

  • класс SQLAlchemyError,
    базовый класс всех исключений SQLAlchemy
  • исключение InvalidRequestError,
    которое сигнализирует о некорректном запросе
  • исключение ProgrammingError,
    которое возбуждается при ошибках программирования
  • исключение StatementError,
    которое оборачивает ошибки исполнения выражений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить