db

class pydantic_extra.db.DB

Базовые классы: pydantic.BaseModel, abc.ABC

Базовый класс для конфигурации базы данных

type: str
abstract property connect_str: str | sqlalchemy.URL

строка для sqlalchemy.create_engine() (может быть cached_property)

property engine: sqlalchemy.Engine

Создаёт sqlalchemy.Engine (может быть cached_property)

session() sqlalchemy.orm.Session

Создаёт sqlalchemy.orm.Session

setup() None

Настраивает SQLAlchemy для работы с данным диалектом

Устарело, начиная с версии 1.1, будет удалено в версии 2.0: Используйте setup_engine().

setup_engine(engine: sqlalchemy.Engine) sqlalchemy.Engine

Настраивает экземпляр sqlalchemy.Engine для работы с данным диалектом.

engine() применяет данный метод.

Добавлено в версии 1.1.

class pydantic_extra.db.SQLite

Базовые классы: DB

Конфигурация для базы данных SQLite

type: Literal['sqlite']
path: pathlib.Path

путь до базы данных

class pydantic_extra.db.MySQL

Базовые классы: DB, CustomLibraryMixin

Конфигурация для базы данных MySQL и MariaDB

type: Literal['mysql', 'mariadb']
host: str

адрес сервера баз данных

port: int = 3306

порт сервера баз данных

login: str

логин для авторизации на сервере баз данных

password: SecretStr

пароль для авторизации на сервере баз данных

encoding: str = "utf8mb4"

кодировка базы данных

database: str

имя базы на сервере баз данных

library: str = "pymysql"

Используемая библиотека. Способы замены.

class pydantic_extra.db.Mysql

Алиас для MySQL.

Устарело, начиная с версии 1.1, будет удалено в версии 2.0: Используйте MySQL.

class pydantic_extra.db.AnyDB

Базовые классы: DB

Конфигурация для любой базы данных

type: Literal['any']
str_: str

В конфигурации используйте str.

Строка для SQLAlchemy

type pydantic_extra.db.T_DB = SQLite | MySQL | AnyDB

Пример:

from pydantic import BaseModel, Field

from pydantic_extra.db import T_DB


class Config(BaseModel):
    db: T_DB = Field(discriminator="type")