📑 Tabela de Conteúdo

🐍 Como Automatizar a Limpeza de Registros no SQL Server com Python e JSON (Com Log)

 

Script Python para deletar registros antigos do SQL Server com leitura de JSON e geração de log automático.
Script Python para deletar registros antigos do SQL Server com leitura de JSON e geração de log automático.

Manter a base de dados enxuta e saudável é fundamental para a performance de qualquer sistema. Mas, como fazer isso de forma prática, segura e sem precisar mexer em cada detalhe do código a cada nova execução?

Neste artigo, vou te mostrar como criar um script em Python que deleta registros antigos de uma tabela no SQL Server com base em um intervalo de datas, usando um arquivo de configuração .json. E mais: o script gera logs automáticos com a quantidade de registros excluídos — tudo sem complicação!

🧠 Por que automatizar a exclusão de dados?

Com o tempo, bancos de dados crescem demais e começam a apresentar problemas como lentidão nas consultas, travamentos e até erros de sincronização. Ao automatizar a limpeza periódica, você:

  • Melhora o desempenho das consultas;

  • Evita acúmulo de dados desnecessários;

  • Ganha tempo ao não depender de comandos manuais;

  • Cria um processo reversível e seguro (com logs para rastreabilidade).


🛠️ O que esse script Python faz?

  • Lê dados de conexão e intervalo de datas a partir de um arquivo .json;

  • Executa a exclusão de registros com base em uma coluna de data;

  • Gera um log.txt informando data, tabela e número de registros deletados;

  • Roda de forma simples e reutilizável para diferentes tabelas ou datas.


📁 Estrutura do Projeto

bash

/limpador_sql/ │ ├── main.py # Script principal ├── configuracao.json # Arquivo com os parâmetros └── log.txt # Registro automático da execução

📦 Exemplo de configuracao.json

json

{ "conexao": { "server": "SEU_SERVIDOR", "database": "SUA_BASE", "username": "SEU_USUARIO", "password": "SUA_SENHA", "driver": "ODBC Driver 17 for SQL Server" }, "consulta": { "tabela": "nome_da_tabela", "coluna_data": "data_criacao", "data_inicio": "2023-01-01", "data_fim": "2023-12-31" } }


Script Python


import pyodbc import json from datetime import datetime def carregar_configuracao(caminho_arquivo): with open(caminho_arquivo, 'r', encoding='utf-8') as f: return json.load(f) def registrar_log(tabela, qtd_linhas, data_inicio, data_fim): log_entry = ( f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] " f"Tabela: {tabela} | Linhas deletadas: {qtd_linhas} | " f"Período: {data_inicio} até {data_fim}\n" ) with open("log.txt", "a", encoding="utf-8") as log_file: log_file.write(log_entry) def deletar_registros(config): conn_info = config['conexao'] consulta = config['consulta'] server = conn_info['server'] database = conn_info['database'] username = conn_info['username'] password = conn_info['password'] driver = conn_info['driver'] tabela = consulta['tabela'] coluna_data = consulta['coluna_data'] data_inicio = consulta['data_inicio'] data_fim = consulta['data_fim'] dt_inicio = datetime.strptime(data_inicio, "%Y-%m-%d") dt_fim = datetime.strptime(data_fim, "%Y-%m-%d") conn_str = f"""DRIVER={{{driver}}}; SERVER={server}; DATABASE={database}; UID={username}; PWD={password}""" try: conn = pyodbc.connect(conn_str) cursor = conn.cursor() query = f""" DELETE FROM {tabela} WHERE {coluna_data} >= ? AND {coluna_data} <= ? """ cursor.execute(query, dt_inicio, dt_fim) qtd = cursor.rowcount conn.commit() print(f"[OK] {qtd} registros deletados da tabela '{tabela}'.") registrar_log(tabela, qtd, data_inicio, data_fim) except Exception as e: print(f"[ERRO] Falha ao deletar registros: {e}") registrar_log(tabela, "ERRO", data_inicio, data_fim) finally: if 'cursor' in locals(): cursor.close() if 'conn' in locals(): conn.close() if __name__ == "__main__": config = carregar_configuracao("configuracao.json") deletar_registros(config)

Basta alterar as datas e o nome da tabela no .json e rodar o script novamente. Isso evita alterações diretas no código!


🔥 Como executar o script

Com Python e a biblioteca pyodbc instalados, digite no terminal:

bash

python main.py

E pronto! Os registros serão apagados e você verá algo como:

csharp

[OK] 1.243 registros deletados da tabela 'pedidos'.

E o arquivo log.txt será automaticamente atualizado:

yaml

[2025-06-27 22:15:38] Tabela: pedidos | Linhas deletadas: 1243 | Período: 2023-01-01 até 2023-12-31


✅ Benefícios dessa abordagem

  • Modularidade: separação entre código e configuração.

  • Segurança: nenhuma informação sensível exposta no script.

  • Controle: log detalhado de todas as execuções.

  • Facilidade: qualquer um da equipe pode rodar o script apenas atualizando o .json.


📌 Dica extra: agende a execução!

Se quiser que o script rode automaticamente todo mês, por exemplo, basta configurá-lo no Agendador de Tarefas do Windows ou usar o cron no Linux.


🧩 O próximo passo?

Se quiser ir além, você pode:

  • Exportar os registros deletados para um backup .csv antes da exclusão;

  • Adicionar múltiplas tabelas ao JSON;

  • Criar uma interface simples com data de início/fim para qualquer usuário executar.


💬 Conclusão

Automatizar a limpeza do banco de dados com Python é uma solução inteligente, segura e escalável. E o melhor: você pode reutilizar o mesmo script com diferentes tabelas e datas, apenas trocando o conteúdo do arquivo de configuração.

Gostou da ideia? Que tal começar agora mesmo a aplicar essa solução no seu ambiente?

✝ Copyright © Blog do KDS - Isaías 40:5 “A glória do Senhor se manifestará, e toda a humanidade a verá.”