Fala galera do mundo dos dados! Todo mundo bem? Espero que sim! Seguimos a série Criar CRUD com Streamlit e o PostgreSQL. Chegou a hora de inserir dados com Streamlit e o PostgreSQL.
Este post faz parte de uma série para construção de uma aplicação Web integrada com um banco de dados executando todas as operações do CRUD, confere as divisões do conteúdo:
- Criar CRUD com Streamlit e o PostgreSQL
- Inserir Dados com Streamlit e o PostgreSQL – Você está aqui, segue a missão!
- Consultar Dados com Streamlit e o PostgreSQL
- Deletar Dados com Streamlit e o PostgreSQL
- Alterar Dados com Streamlit e o PostgreSQL
Então, partiu CRUD ao Cubo!
Inserindo Dados ao Cubo
Todo o processo será iniciado no arquivo main.py, que vai exibir um menu lateral onde o usuário tem a opção de navegar pelas páginas através do menu. Ao escolher a opção de Inserir a aplicação vai chamar a função insert do módulo page.
# carregando as bibliotecas import streamlit as st # carregando as funções em outros arquivos .py import page.insert as insert # criando a barra lateral do menu st.sidebar.title('Menu') page = st.sidebar.selectbox('Cliente',['Inserir','Consultar','Alterar','Deletar']) # carregando as páginas de acordo com a seleção do menu if page == 'Inserir': insert.inserir()
Essa é a imagem da aplicação funcionando quando o usuário seleciona o menu Inserir.

Essa página web é construída em Python de forma dinâmica com o framework Streamlit.
Página Web com Streamlit
Na página web do Streamlit teremos um título, e um form com três campos para input de dados e um botão para enviar os dados informados. O título, utilizaremos a função title do Streamlit. Já o form temos uma função no Streamlit de nome form. Para os inputs, serão as funções text_input (tipo de dados de texto), number_input (tipo de dados de números) e selectbox (tipo de dados de seleção em um box). Fechando com o botão, utilizando a função form_submit_button, que vai enviar os dados digitados para algum lugar. Tudo isso vamos encapsular dentro de uma função, que daremos o nome de inserir, e está escrito em Python no bloco de código abaixo.
# carregando as bibliotecas import streamlit as st # carregando as funções em outros arquivos .py import controller.cliente as cliente def inserir(): st.title('Inserir Dados') profissoes = ['Analista de Dados', 'Engenheiro de Dados', 'Cientista de Dados'] with st.form(key='insert'): input_name = st.text_input(label='Insira o nome') input_age = st.number_input(label='Insira a idade', format='%d', step=1) input_job = st.selectbox(label='Insira a profissão', options=profissoes) button_submit = st.form_submit_button('Enviar') if button_submit: cliente.incluir(input_name, input_age, input_job) st.success('Cliente incluido com sucesso!!!')
Quando o usuário clicar no botão Enviar, a aplicação vai chamar uma função no controller cliente de nome incluir e aí começa a comunicação do Streamlit com o PostgreSQL.
Streamlit e o PostgreSQL
No controller, a função incluir vai receber três parâmetros nome, idade, profissão, que serão informados pelo form preenchido pelo usuário. Em seguida ,será executado um código SQL para inserir esses dados no banco, aqui utilizaremos a função INSERT INTO, conforme código em Python + SQL.
# carregando as funções em outros arquivos .py import services.database as db # função para inserir registros no banco de dados def incluir (nome, idade, profissao): db.cur.execute(""" INSERT into public.clientes (nome, idade, profissao) values('%s', '%s', '%s') """ % (nome, idade, profissao)) db.con.commit()
Todo esse processo iniciado no arquivo main.py finaliza com os registros sendo gravados no banco de dados. Agora já temos a primeira letra do CRUD funcionando na aplicação. Até o próximo módulo, onde consultaremos os dados inseridos no PostgreSQL.
Conteúdos ao Cubo
Se curtiu, lá no Dados ao Cubo tem muito mais. Então, deixo algumas sugestões de conteúdos que você pode encontrar por lá, sempre falando sobre o mundo dos dados.
- Linguagem de Programação Python do Zero
- Extraindo Texto de Arquivos PDF com Python
- Leitura de Textos com Emoji
- Extraindo Dados do Twitter com Python
- Análise de Imagens com OpenCV
- ML.Net – Modelos em Produção com WebApi e Docker
- Visualização de Dados com Seaborn Python
Finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades.

Baiano, apaixonado por dados e tecnologia, amante das inovações tecnológicas que facilitam a vida humana! Formado em Engenharia da Computação e com MBA em Gestão da Informação e Business Intelligence e especialização em Data Science. Atualmente atua como Data Tech Lead na Lopes, além de Professor na área de dados e nas horas vagas cria uns modelos de Machine Learning com Python e soluções diversas com dados!
2 Comments
Guilherme
6 de março de 2023Tiago Dias, o codigo completo tem disponivel no github ?
Tiago Dias
6 de março de 2023Opa Guilherme! Certeza! https://github.com/dadosaocubo/crud_streamlit