Быстрый старт¶
Установка¶
pip install -r requirements.txt
На macOS также нужен клиент Firebird:
brew install firebird
Настройка подключения¶
Через .env в корне проекта:
DB_HOST=192.168.88.64
DB_PORT=3050
DB_DATABASE=C:\Program Files (x86)\AutoDealer\AutoDealer\Database\StOm1.fdb
DB_USER=SYSDBA
DB_PASSWORD=masterkey
DB_CHARSET=UTF8
Или явно в коде (вызов до импорта моделей):
from autodealer.connection import configure_database
configure_database(
host="192.168.88.64",
port=3050,
database=r"C:\path\to\AutoDealer.fdb",
user="SYSDBA",
password="masterkey",
charset="UTF8",
)
Использование моделей¶
from autodealer.domain.bank import Bank
from autodealer.domain.users import Users
# Все записи
banks = Bank.objects.all()
# Фильтрация
active = Bank.objects.filter(hidden=0).order_by('name').all()
# Один объект
bank = Bank.objects.get(bank_id=1)
print(bank.name, bank.bik)
# Проверка существования
if Bank.objects.filter(name__icontains='сбер').exists():
print("Сбербанк найден")
# Список словарей
rows = Bank.objects.filter(hidden=0).values('bank_id', 'name')
Запись данных¶
# Создание
bank = Bank.objects.create(name="Тинькофф", bik="044525974", hidden=0)
# Массовое обновление
Bank.objects.filter(hidden=1).update(hidden=0)
# Удаление
Bank.objects.filter(hidden=1).delete()
Сложные запросы (low-level)¶
Для многотабличных запросов или сложных условий используйте session_scope:
from sqlalchemy import select
from autodealer.connection import session_scope
from autodealer.domain.bank import Bank
with session_scope() as session:
result = session.execute(
select(Bank)
.where(Bank.hidden == 0)
.order_by(Bank.name)
).scalars().all()
Генерация моделей¶
При изменении схемы БД — перегенерировать модели:
python autodealer/tools/generate_models.py
Скрипт перезаписывает все файлы в autodealer/domain/.