from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from pathlib import Path import os # Configurar caminho do banco de dados db_dir = Path.home() / '.local' / 'share' / 'controles' db_dir.mkdir(parents=True, exist_ok=True) db_path = db_dir / 'database.db' # Configurar SQLite com opções para melhor concorrência engine = create_engine( f'sqlite:///{db_path}', connect_args={ 'timeout': 30, # Tempo de espera em segundos 'check_same_thread': False # Permite acesso de múltiplas threads }, pool_pre_ping=True, # Verifica conexão antes de usar pool_recycle=3600 # Recicla conexões após 1 hora ) Session = sessionmaker(bind=engine) Base = declarative_base() def get_db_connection(): """Retorna uma nova sessão do banco de dados""" session = Session() try: return session except Exception as e: session.rollback() raise e