Soma diária em BD com python

Segue um exemplo de como fazer uma consulta em um banco de dados (BD), calcular a soma diária dos valores de uma coluna e gravar um arquivo com o valor. Escrito em python e com uma consulta usando SQL, contém vários elementos para estudo.

Primeiramente, script a seguir importa os módulos necessários, recebe três argumentos externos (tipo/grupo, data inicial e data final) e define o caminho (path) do script em execução. Depois, ele abre um arquivo com o nome e código dos pontos de um grupo para ler linha por linha (exceto a primeira). Cada linha é quebrada pelo caractere espaço de modo a formar um vetor para guarda o primeiro elemento (o código do ponto).

A query de consulta ao banco de dados PostgreSQL extrai ano, mês e dia da coluna “data” para salvar essas variáveis em colunas separadas. Além disso, os dados são agrupados (GROUP BY) por dias e ordenados cronologicamente. Desse modo, são somados todos os valores horários da coluna “variavel” dentro de um mesmo dia (SUM).

O resultado da consulta ao banco é guardado no vetor de vetores “valores” (cada dia tem cinco valores, e o vetor final tem tantos elementos quanto o número de dias). Foi incluída uma verificação do tamanho do vetor para saber se tem o número desejado de dias ou se o resultado está incompleto ou mesmo vazio.

Por fim, é gravado um arquivo de saída com o nome do ponto trabalhado (com cabeçalho), linha por linha. Em cada linha (um vetor), é feita uma verificação em cada elemento: se estiver vazio, grava um traço; caso contrário, arredonda o valor para uma casa decimal. O código (formatado para ter 8 dígitos), a data e o valor (já convertido para string) são gravados separados por espaço.