get_db_connection duplicado, consolidando em base.py

This commit is contained in:
2026-02-16 21:49:23 -03:00
parent 8ea6f15f3a
commit 6882b57081
3 changed files with 15 additions and 37 deletions

View File

@@ -1,8 +1,7 @@
from sqlalchemy import create_engine
from sqlalchemy import create_engine, text
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'
@@ -24,10 +23,14 @@ Session = sessionmaker(bind=engine)
Base = declarative_base()
def get_db_connection():
"""Retorna uma nova sessão do banco de dados"""
"""Retorna uma nova sessão do banco de dados com PRAGMAs configuradas"""
session = Session()
try:
# Configurar SQLite para melhor tratamento de concorrência
session.execute(text("PRAGMA journal_mode=WAL"))
session.execute(text("PRAGMA busy_timeout=5000"))
return session
except Exception as e:
session.rollback()
raise e
session.close()
raise e

View File

@@ -1,42 +1,17 @@
from datetime import datetime, timedelta
from werkzeug.security import generate_password_hash, check_password_hash
from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, Text, Numeric, Date, Enum, create_engine, text
from sqlalchemy.orm import sessionmaker, relationship, backref
from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, Text, Numeric, Date, Enum
from sqlalchemy.orm import relationship, backref
import os
import pyotp
from pathlib import Path
from sqlalchemy.pool import NullPool
import secrets
from flask_mail import Message
from flask import url_for
import enum
from flask_login import UserMixin
from .rbac import Role, Permission, role_permissions, user_roles
from .base import Base, engine, Session
import logging
from .rbac import Role
from .base import Base, engine, get_db_connection
# 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'
DATABASE_URL = f"sqlite:///{db_path}"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
def get_db_connection():
"""Retorna uma nova sessão do banco de dados"""
Session = sessionmaker(bind=engine)
db = Session()
try:
# Configurar SQLite para melhor tratamento de concorrência
db.execute(text("PRAGMA journal_mode=WAL"))
db.execute(text("PRAGMA busy_timeout=5000"))
return db
except:
db.close()
raise
def execute_query(query, params=None):
"""
@@ -742,4 +717,4 @@ def init_database():
session.close()
if __name__ == "__main__":
init_database()
init_database()

View File

@@ -2,9 +2,9 @@ from datetime import datetime, timedelta
from functions.database import (
Base, Militante, CotaMensal, TipoPagamento, Pagamento,
MaterialVendido, TipoMaterial, VendaJornalAvulso, AssinaturaAnual,
RelatorioCotasMensais, RelatorioVendasMateriais, engine, SessionLocal,
RelatorioCotasMensais, RelatorioVendasMateriais,
Setor, ComiteCentral, Usuario, Role, EmailMilitante, Endereco,
ComiteRegional, Celula, EstadoMilitante
ComiteRegional, Celula, EstadoMilitante, get_db_connection
)
import random
from faker import Faker
@@ -302,7 +302,7 @@ def criar_assinaturas(session, militantes):
def seed_database():
"""Função principal para popular o banco de dados"""
session = SessionLocal()
session = get_db_connection()
try:
print("Iniciando população do banco de dados...")