Geração de Relatorio.

22 views
Skip to first unread message

Matheus Liniglia

unread,
Apr 22, 2019, 9:56:04 AM4/22/19
to Python Brasil
Estou com uma duvida, de como implantar um geração de relatório em cima do meu programa criado.
O programa é bem simples, cuida do historio educacional e profissional dos funcionários da empresa. 
Consegui fazer de como simples, a navegação dos menus para inserir informação junto ao banco de dados, até ai tudo ok. 
Porém como vou fazer para gerar esse relatório, já dentro do programa? 
Dei algumas pesquisadas e achei a biblioteca Panda, porem não sei se realmente ele me ajudaria nesse caso, se precisar do código do meu programa para melhor entendimento eu insiro ele! 

Obs: Cada tópico, eu criei uma tabela dentro do Banco (MySql). Com isso fica um trabalho maior para gerar esse relatório, exportando as informações do banco de dados. E por se tratar de uma informação que geraria um relatório para impressão e arquivamento, acho que a função já dentro do programa seria ideal
  
Agradeço desde já!!

Igo Pereira

unread,
Apr 23, 2019, 10:32:45 AM4/23/19
to python...@googlegroups.com
Bom dia Matheus

Em qual formato você quer salvar seus arquivos gerado com os dados do seu banco ? 

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para python...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/6ded40f0-6f83-4951-a569-6207c618bf29%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Matheus Liniglia

unread,
Apr 23, 2019, 10:45:19 AM4/23/19
to python...@googlegroups.com
Igo, primeiramente muito obrigado pelo retorno!

Por automatização, seria ideal ele vir no modo "PDF" já para uma possível impressão ou até mesmo uma tabela (XLS) para tratar as informações.
Só que minha duvida maior é em relação a montagem do programa, já tenho praticamente tudo montado, porem por se tratar de um programa de Histórico Educacional e Profissional dos funcionários ele vai precisar gerar esse "Relatório", mais tenho em torne de 10 tabelas  e como montar elas nesse relatorio, realmente to um pouco perdido, pesquisei sobre o Panda e até mesmo reportlab porém não sei se encaixa no que preciso.
Espero ter passado todas a informações rs

Igo Pereira

unread,
Apr 23, 2019, 11:30:57 AM4/23/19
to python...@googlegroups.com
Cara, eu fiz uma rápida pesquisada aqui. Talvez te dê um norte em rumo a solução do seu problema.

Nesse pequeno treco de código foi usado 3 bibliotecas Pandas[1], SQLAlchemy[2] e Reportlab[3].

Código:

import pandas as pd
from sqlalchemy import create_engine
from reportlab.pdfgen import canvas

# Faz a conexão com o banco de dados MySql
conn = create_engine('mysql+pymysql://user:password@ip:port/banco_de_dado_exemplo')

# Query de busca da tabela que você deseja obter os dados
query = 'SELECT * FROM table'

# Ler os dados do seu banco de dados, passando a query de busca e a conexão do banco
df = pd.read_sql(query, conn)


def file_pdf(df_file, filename):
    """
        Esta função é para gerar o arquivo em pdf, porém os dados são salvos 
        de forma desestruturada. A lib reportlab tem a opção de você criar seu
        próprio template do seu arquivo em pdf, e assim você personaliza da
        forma que reolve seu problema. Neste caso foi apenas para te mostrar
        que é possível, não vou adentrar mais nesta lib, não sei também se essa
        é a melhor maneira de gerar arquivo pdf usando esse código, mas fica ai 
        pra você da mais uma estudada sobre essa lib e reformular melhor esse código:D
        
        file --> arquivo que será salvo
        filename --> nome do arquivo que será salvo
    """
    cnv = canvas.Canvas("{}.pdf".format(filename))
    cnv.drawString(150,450, df_file.to_string())
    cnv.save()

Exemplo:

file_pdf(df, 'relatorio')


def file_xlsx(df_file, filename):
    """
        O propio pandas tem uma opção de salvar seus arquivos em formato .xlsx.
        Essa função simplesmente pega seu dados que estão como DataFrame do pandas
        transforma esses dados em .xlsx (Excel) em uma varável, e salvo como um arquivo excel.
        
        Detalhe: Você disse que tem várias tabelas para serem processadas, nesta função
        esta sendo processando apenas uma tabela do banco, e neste caso, também vou deixar
        para você essa tarefa kkk , deve ser fácil, da umas pesquisadas ai que irá conseguir. 
        Como citei antes foi apenas para te dá um norte da coisa.
        
        df_file --> dataframe que tem os dados do banco
        filename --> nome do arquivo que será salvo
        
    """
    writer = pd.ExcelWriter('{}.xlsx'.format(filename))
    df_file.to_excel(writer, 'Sheet1')
    writer.save()

Exemplo:

file_xlsx(df, 'relatorio')


Com isso espero ter dado pelo menos uma pequena ajuda, desculpem se tem alguma redundância no código ou alguma coisa que tenho escrito de errado, sou iniciante em python e ainda estou em face de aprendizado kkkk. Abraços.

Att,
Igo Barros

Matheus Liniglia

unread,
Apr 23, 2019, 12:40:59 PM4/23/19
to python...@googlegroups.com
Igo,
Obrigado de verdade.

Vou estudar melhor sobre, então realmente estava indo pelo caminho certo.. kk
Só vou precisar realmente enteder melhor sobre essas bibliotecas (pandas e reportlab)

Uma duvida somente, o panda puxa todo o "Banco de Dados" que eu preciso? Ex: SQL, Sqlite, Mysql etc..

Igo Pereira

unread,
Apr 23, 2019, 1:16:17 PM4/23/19
to python...@googlegroups.com
Sim Matheus com a função read_sql() do pandas você pode ler a maioria dos banco de dados relacionais. Ex.: (Mysql, Postgres, Oracle, SQLServer, SQLite, ...)

Desde de que mude o drive de conexão da função create_engine() do SQLAlchemy, na documentação tem informando os drives de conexões de outros bancos de dados.

Link da documentação do SQLAlchemy na parte de engines.

E sobre o reportlab da uma olhada nesse link, talvez lhe ajude em algo:

Att,
Igo Barros

Matheus Liniglia

unread,
Apr 23, 2019, 1:24:21 PM4/23/19
to python...@googlegroups.com
Entendi, vou dar uma estudada.. To viajando em relação a gerar esse relatório, e isso que deu uma travada no desenvolvimento do meu programa, agradeço mesmo!

Igo Pereira

unread,
Apr 23, 2019, 1:31:39 PM4/23/19
to python...@googlegroups.com
Por nada irmão.

Quando solucionar seu problema, posta aqui sua solução, por favor, acho que irá ajuda a muitos colegas futuramente, inclusive eu kkkk :P. Boa sorte!

Att,
Igo Barros

Reply all
Reply to author
Forward
0 new messages