O que preciso aprender para fazer o programa comunicar com um servidor?

Olá pessoal,

Não sou da área de TI mas trabalho com R e Python, power bi…
Mas comecei a escrever uns programas mais robustos em python para automatizar uns processos e agora tenho um programa de planejamento que estou escrevendo e queria distribuir então precisava de ajuda em duas coisas:

  1. O que preciso ler/estudar para tornar meu programa “instalável” e poder distribuir?

  2. o que preciso ler/estudar para fazer meu programa “conversar” com um banco de dados em um servidor?

poderiam indicar material ou matérias que sejam para leigos e pessoa de fora da área? eu trabalho bem com python e postgre então se puder fazer com essas linguagens facilitaria.

valeu!

Para empacotar e distribuir você pode fazer uso de algumas tecnologias, sendo uma delas o AppImage no caso de sua aplicação ficar entorno do Linux.


Para conectar Python à um servidor de banco de dados PostgreSQL, você pode fazer o uso do Psycopg 3, segue um exemplo básico.

import psycopg

conn = psycopg.connect(
    host="<SERVER-IP>",
    database="<TABLE>",
    user="<USER>",
    password="<PASSWORD>")

Mais informações segue Uso básico do módulo.

2 curtidas

Não tenho experiência com R e, PowerBi até onde sei, no máximo usa SQL e, algumas execessões para o Python em si. Não é magia, e sim tecnologia. Além de saber lógica de programação, recomendo que estude a base do Python, posteriormente Orientação a Objetos (OO). Para fins didáticos, recomendo que assista o seguinte vídeo para saber o básico de como realizar consultas a um banco de dados com Python: Como Integrar Python e SQL - Passo a Passo com Exemplo Prático - YouTube

Depende do que você busca, mas a opção mais flexível é usar o empacotamento do Python mesmo.

Vai fazer seu programa se integrar melhor em ambientes python de terceiros, vai facilitar automações e controle de versão, vai ajudar com manutenção mais saudável de dependências, se por acaso você use Cython ou algum setup mais complexo, você vai ter menos dor de cabeça, é amigável com multiplataforma, etc… E bom, é o bom e velho e completo pip, você pode distribuir no pypi, em forma de pacotes, zip, vai ser possível integrar bem com anaconda, pyenv, jupyter, facilitar a integração com o power bi já que você podera integrar a scripts, dentre outros ambientes exóticos, etc.

De uma olhada na documentação oficial no pypi sobre como usar o setuptools

No Documentação oficial do setuptools:
https://setuptools.pypa.io/en/latest/

Mas basicamente você vai criar um arquivo setup.py na raiz do seu projeto e configurar nesse arquivo as dependências, nome, versão, diretórios de recurso, etc… Depois vai poder fazer coisas como:

python setup.py install 
# vai instalar o projeto junto com os seus outros pacotes globalmente,
# ou no env que você tem carregado.

python setup.py sdist --formats=zip 
# pip install ...zip

# no diretório do projeto ...
pip install

Geralmente os projetos usam um requirements.txt para os projetos, e puxam para dentro do setup.py, assim qualquer um contribuindo pode simplesmente usar pip install requirements.txt… Você pode dessa forma separar dependências de produção das dependências de desenvolvimento que não deve ir junto do seu pacote, e assim vai…

2 curtidas

Então, seria linux na minha máquina mas estou desenvolvendo para windows mesmo. Vou dar uma olhada no APPimage e nopsycopg

OOP já uso no python. Não domino muito mas sei usar.

Eu procurei um pouco sobre sistemas de redes mas é tanta coisa que dá uma perdida

O problema da abordagem citada pelo @romulopb na minha opinião, é que este tipo de “instalação” é mais focada no desenvolvedor, o usuário comum de Windows, esta acostumado com o clássico instalador “next → next → install” se o que deseja é isso segue um bom tutorial, utilizando o PyInstaller e o InstallForge.

2 curtidas

De fato o @null tem razão, você vai ter de ver quais são seus requisitos, por exemplo, aqui na empresa usamos frontends em angular/react/flutter, e ferramentas de desenvolvimento e análise de dados em python e R por exemplo.

Se outras pessoas, assim como você tem algum pé em análise de dados, provavelmente podem querer bolar as próprias automações e construir seus próprios ambientes, documentar e integrar com outros algoritmos de pesquisa e anális, etc, nesse caso bibliotecas, packages e containers vão agilizar.

Mas se por exemplo você apenas quer um frontend simples e limpo, talvez nem deva distribuir programas, pode ser interessante pensar em clientes mobile e até mesmo web.