Подключение и сессии

Подключение к базе данных Firebird и управление сессиями SQLAlchemy.

Типичный сценарий использования:

from autodealer.connection import configure_database, session_scope

configure_database(
    host="192.168.88.64",
    port=3050,
    database=r"C:\path\to\AutoDealer.fdb",
    user="SYSDBA",
    password="masterkey",
)

with session_scope() as session:
    # работа с сессией
    ...
class autodealer.connection.Base(**kwargs: Any)[исходный код]

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

Declarative base class for ORM models.

metadata: ClassVar[MetaData] = MetaData()

Refers to the _schema.MetaData collection that will be used for new _schema.Table objects.

См. также

orm_declarative_metadata

objects = <QuerySet model=Base>
registry: ClassVar[registry] = <sqlalchemy.orm.decl_api.registry object>

Refers to the _orm.registry in use where new _orm.Mapper objects will be associated.

autodealer.connection.get_connection_url() str | URL[исходный код]

Вернуть SQLAlchemy URL для подключения к Firebird.

Приоритет: явный вызов configure_database() → переменные окружения DATABASE_URL / DB_URLDatabaseConfig.from_env().

autodealer.connection.create_db_engine(url: str | URL | None = None) Engine[исходный код]

Создать новый SQLAlchemy Engine для Firebird.

Параметры:

url – Готовый URL. Если не передан — используется get_connection_url().

Результат:

Новый экземпляр Engine (не кешируется).

autodealer.connection.get_engine(url: str | URL | None = None) Engine[исходный код]

Лениво создать или вернуть кешированный engine.

Параметры:

url – Если передан — пересоздаёт engine с новым URL.

Результат:

Текущий активный Engine.

autodealer.connection.configure_database(**kwargs: object) Engine[исходный код]

Настроить подключение, передав параметры напрямую (без .env).

Принимает те же поля, что и DatabaseConfig: database, user, password, host, port, charset, dsn.

Параметры:

**kwargs – Параметры подключения.

Результат:

Пересозданный Engine.

Example:

configure_database(
    host="192.168.88.64",
    port=3050,
    database=r"C:\path\to\AutoDealer.fdb",
    user="SYSDBA",
    password="masterkey",
    charset="UTF8",
)
autodealer.connection.configure_engine(url: str | URL | None = None) Engine[исходный код]

Rebuild the SQLAlchemy engine/session factory with new connection details.

autodealer.connection.session_scope() Iterator[Session][исходный код]

Контекстный менеджер для транзакционной работы с сессией.

Автоматически вызывает commit при успехе и rollback при исключении.

Yields:

Активная Session.

Example:

with session_scope() as session:
    result = session.execute(select(Bank)).scalars().all()
autodealer.connection.get_session() Generator[Session, None, None][исходный код]

Генератор сессии для интеграции с FastAPI и подобными фреймворками.

Yields:

Session

Example:

# FastAPI
def get_banks(session: Session = Depends(get_session)):
    return session.execute(select(Bank)).scalars().all()
autodealer.connection.set_session_user(user_id: int) None[исходный код]

Установить ID пользователя для Firebird-триггеров.

Триггеры AutoDealer (например, ORGANIZATION_AU) определяют автора изменения через таблицу USER_CONNECTION:

SELECT USER_ID FROM USER_CONNECTION
WHERE USER_CONNECTION_ID = CURRENT_CONNECTION
INTO :CONNECTED_USER_ID;

После вызова этой функции каждый session_scope() будет автоматически регистрировать текущее соединение в USER_CONNECTION перед выполнением запросов.

Параметры:

user_id – ID пользователя из таблицы users.

Example:

configure_database(host=..., user="SYSDBA", password="masterkey")
set_session_user(1)   # user_id=1 (SYSDBA) в StOm1.fdb
class autodealer.connection.DatabaseConfig(database: str | None, user: str, password: str, host: str | None = None, port: int | None = None, charset: str = 'UTF8', dsn: str | None = None)[исходный код]

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

Параметры подключения к базе данных Firebird.

Используется внутри configure_database() и get_connection_url(). Можно создать вручную или через from_env().

Параметры:
  • database – Путь к файлу .fdb на сервере (Windows-путь).

  • user – Имя пользователя Firebird.

  • password – Пароль.

  • host – Хост сервера. По умолчанию из DB_HOST или "localhost".

  • port – Порт. По умолчанию из DB_PORT или 3050.

  • charset – Кодировка. По умолчанию из DB_CHARSET или "UTF8".

  • dsn – Полный DSN (альтернатива отдельным параметрам).

database: str | None
user: str
password: str
host: str | None = None
port: int | None = None
charset: str = 'UTF8'
dsn: str | None = None
classmethod from_env() DatabaseConfig[исходный код]

Создать конфигурацию из переменных окружения.

Читает DB_DATABASE (или DB_PATH / DB_NAME), DB_USER, DB_PASSWORD, DB_HOST, DB_PORT, DB_CHARSET, DB_DSN.

Исключение:

RuntimeError – Если не заданы обязательные переменные.

to_url() URL[исходный код]