/
tsps
/
core
Обзор
Документация
Войти
/
tsps
/
core
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
scripts/console.py
78 строк
3 KB
Василий Петров
Создание бота-админа
07 мар 2026, 12:35
07 мар 2026, 12:35
7c399f4
Код
Авторство
О чём код?
import sys from pathlib import Path # Добавляем корень проекта в PYTHONPATH root = Path(__file__).parent.parent sys.path.insert(0, str(root)) # Инициализация: загрузка конфига и создание engine происходит при импорте from app.database import engine, SessionLocal from app.models import admin, judge, document, document_file, case_entity, court, document_type, document_import_job from sqlalchemy import text def _test_db(): with engine.connect() as conn: result = conn.execute(text("SELECT 1")) assert result.scalar() == 1 def main(): print("Инициализация сессии БД...") db = SessionLocal() try: _test_db() print("Подключение к БД успешно.") except Exception as e: print(f"Не удалось подключиться к БД: {e}") db.close() sys.exit(1) # Словарь глобальных переменных в консоли scope = { "db": db, "session": db, "admin": admin, "judge": judge, "document": document, "document_file": document_file, "case_entity": case_entity, "court": court, "document_type": document_type, "document_import_job": document_import_job } banner = """ FastAPI Console Доступные переменные: db, admin, judge, document, document_file, case_entity, court, document_type Примеры: db.get(model.Model, id) - аналог .find db.query(admin.Admin).all() db.query(admin.Admin).filter_by(first_name='Василий').first() new_ad = admin.Admin(first_name='', last_name='', email='') db.add(new_ad) db.commit() # если была ошибка - db.rollback() db.refresh(new_ad) - аналог .reload! Сессия автоматически закроется при выходе из консоли, но при использовании db вне этого скрипта — не забудь вызвать db.close() """.strip() def on_exit(): db.close() print("\nСессия БД закрыта.") try: # Пытаемся использовать IPython from IPython import embed embed(banner1=banner, user_ns=scope) except ImportError: # Fallback на стандартную оболочку import code console = code.InteractiveConsole(locals=scope) console.interact(banner=banner) finally: on_exit() if __name__ == "__main__": main()