54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
# Alterações no Gerenciamento de Conexões com o Banco de Dados
|
|
|
|
## Commit
|
|
- ID: [ID do commit será adicionado após o commit]
|
|
- Data: [Data do commit]
|
|
- Autor: [Nome do autor]
|
|
|
|
## Contexto
|
|
O sistema estava utilizando uma única sessão global do SQLAlchemy (`db_session`) que era criada no início da aplicação. Isso poderia causar problemas de concorrência e vazamento de recursos.
|
|
|
|
## Alterações Realizadas
|
|
|
|
### 1. Remoção da Sessão Global
|
|
- Removida a linha `db_session = get_db_connection()` do início do arquivo
|
|
- Todas as rotas agora criam sua própria sessão
|
|
|
|
### 2. Novo Padrão de Gerenciamento de Sessão
|
|
Em cada rota, implementamos o seguinte padrão:
|
|
```python
|
|
db = get_db_connection()
|
|
try:
|
|
# Operações com o banco
|
|
db.commit()
|
|
except Exception as e:
|
|
db.rollback()
|
|
# Tratamento de erro
|
|
finally:
|
|
db.close()
|
|
```
|
|
|
|
### 3. Melhorias no Tratamento de Erros
|
|
- Adicionado `db.rollback()` em caso de exceção
|
|
- Melhoradas as mensagens de erro
|
|
- Garantido que a sessão seja fechada mesmo em caso de erro
|
|
|
|
### 4. Padronização de Código
|
|
- Uso de `request.form.get()` ao invés de acessar diretamente o dicionário
|
|
- Conversão explícita de tipos (float, int, date)
|
|
- Validação de dados antes de criar objetos
|
|
- Mensagens de feedback mais claras para o usuário
|
|
|
|
## Impacto no Frontend
|
|
Não houve alterações necessárias nos templates, pois as mudanças foram apenas na forma como o backend gerencia as conexões com o banco de dados.
|
|
|
|
## Benefícios
|
|
1. Maior segurança (evita vazamentos de recursos)
|
|
2. Maior robustez (melhor tratamento de erros)
|
|
3. Código mais fácil de manter (padronização)
|
|
4. Maior eficiência (sessões são fechadas adequadamente)
|
|
|
|
## Observações
|
|
- Esta alteração foi feita para melhorar a arquitetura do sistema
|
|
- Não afeta a funcionalidade existente
|
|
- Recomenda-se seguir este padrão em novas implementações |