Подключение и сессии¶
Подключение к базе данных 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)[исходный код]¶
Базовые классы:
DeclarativeBaseDeclarative base class for ORM models.
- metadata: ClassVar[MetaData] = MetaData()¶
Refers to the
_schema.MetaDatacollection that will be used for new_schema.Tableobjects.См. также
orm_declarative_metadata
- objects = <QuerySet model=Base>¶
- registry: ClassVar[registry] = <sqlalchemy.orm.decl_api.registry object>¶
Refers to the
_orm.registryin use where new_orm.Mapperobjects will be associated.
- autodealer.connection.get_connection_url() str | URL[исходный код]¶
Вернуть SQLAlchemy URL для подключения к Firebird.
Приоритет: явный вызов
configure_database()→ переменные окруженияDATABASE_URL/DB_URL→DatabaseConfig.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[исходный код]¶