Fala galera do mundo dos dados! Todo mundo bem? Espero que sim! Então chegamos a última parte da série Criar CRUD com Streamlit e o PostgreSQL. Portanto, é hora de alterar dados com Streamlit e o PostgreSQL. Aqui vamos fazer as modificaç
Este post é o último da 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
- Consultar Dados com Streamlit e o PostgreSQL
- Deletar Dados com Streamlit e o PostgreSQL
- Alterar Dados com Streamlit e o PostgreSQL – Você está aqui, missão comprida!!!
Então, chegou a hora de finalizar a aplicação web!
Alterando 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 Alterar a aplicação chama a função update do módulo page.
# carregando as bibliotecas import streamlit as st # carregando as funções em outros arquivos .py import page.update as update # 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 == 'Alterar': update.alterar()
Dessa forma, para alterar dados no banco, teremos a tela da imagem abaixo, que abre quando o usuário seleciona o menu Alterar. Então, localizamos o usuário com o id, para carregar os dados já cadastrado no banco. Em seguida, apresentamos o form com os dados cadastrados do usuário. Por fim, é só modificar o que for necessário e clicar no botão Alterar.
Confere agora como essa página foi construída, e em seguida como e onde ela vai buscar esses dados para exibir.
Página Web com Streamlit
Chegou a hora de alterar os registros já inseridos no banco. Aqui precisaremos criar o estado da sessão para compartilhar variáveis entre reexecuções e assim alterar os dados do id consultado quando o usuário clicar no botão Alterar. Começando pela seção, usaremos a função session_state para guardar o estado do form com os dados do usuário carregado a partir do id informado pelo usuário. Em seguida, os dados são enviados pelo botão Alterar para serem atualizados no banco de dados.
# carregando as bibliotecas import streamlit as st # carregando as funções em outros arquivos .py import controller.cliente as cliente # função para a página de alterar dados def alterar(): if "upda" not in st.session_state: st.session_state.upda = False st.title('Alterar Dados') profissoes = ['Analista de Dados', 'Engenheiro de Dados', 'Cientista de Dados'] update_id = st.number_input(label='Insira o Id', format='%d', step=1) button_update_select = st.button('Consultar') if button_update_select: st.session_state.upda = True if st.session_state.upda == True: item = cliente.selecionar_id(update_id)[0] with st.form(key='update'): update_name = st.text_input(label='Insira o nome', value=item[1]) update_age = st.number_input(label='Insira a idade', format='%d', step=1, value=item[2]) update_job = st.selectbox(label='Insira a profissão', options=profissoes, index=profissoes.index(item[3])) button_update = st.form_submit_button('Alterar') if button_update: cliente.alterar(update_name, update_age, update_job, item[0]) st.success('Cliente alterado com sucesso!!!') st.session_state.upda = False
Os botões Consultar e Alterar farão a comunicação do Streamlit com o PostgreSQL através de duas funções: selecionar_id e alterar.
Streamlit e o PostgreSQL
Iniciamos com o serviço database para estabelecer a comunicação com o banco. Para o processo de alteração teremos duas funções: uma que consulta um id e exibe na tela o form de cadastro do usuário, e outra que altera o registro no banco. A função selecionar_id executará um código SQL com a função SELECT com uma cláusula WHERE que identifica o id do cliente informado pelo usuário. Já a função alterar executará um código SQL com a função UPDATE com uma cláusula WHERE que identifica o id do cliente informado pelo usuário e altera o registro na base de dados.
# carregando as funções em outros arquivos .py import services.database as db # função para selecionar apenas um registros no banco de dados def selecionar_id (id): db.cur.execute(""" SELECT * FROM clientes WHERE id = '%s' """ % (id)) recset = db.cur.fetchall() rows = [] for rec in recset: rows.append(rec) return rows # função para alterar registros no banco de dados def alterar (nome, idade, profissao, id): db.cur.execute(""" UPDATE clientes SET (nome, idade, profissao) = ('%s', '%s', '%s') WHERE id = '%s' """ % (nome, idade, profissao, id)) db.con.commit()
E assim chegamos ao fim da construção de uma aplicação Web integrada com um banco de dados executando todas as operações do CRUD.
Alterar Dados com Streamlit ao Cubo
Portanto, espero que vocês tenham curtido a solução. Mas não deixa de Conferir todo o código no github do Dados ao Cubo. Não esqueça de mandar aquele feedback para nós, um abraço e até a próxima.
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.
- Criando Modelos de Machine Learning com Pipeline do Scikit-Learn
- Classificação com scikit-learn
- Analisando Dados do Brasileirão Série A
- Reconhecimento de Voz com a Biblioteca SpeechRecognition Python
- O Guia do XGBoost com Python
- Parceiro de Publicação D³
- Visualização de Dados com Matplotlib Python
- Visualizar Dados do Snowflake no Metabase
Então, 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. Mas não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades.
Apaixonado por dados e tecnologia ❤️ , criando soluções com dados 📊 📈 , desde 2015, sempre buscando tornar os processos orientados! Com formação em Engenharia da Computação 💾 , MBA Gestão da Informação e Business Intelligence e Especialização em Data Science.
Também atuo como professor na área de dados. Nas horas vagas crio modelos de Machine Learning 🤖 com Python em desafios do Kaggle e escrevo no Dados ao Cubo sobre o mundo dos dados 🎲 !
Compartilhando conhecimentos sempre 🚀
2 Comments
FELIPE BERMOND GONÇALVES
14 de fevereiro de 2023Olá Tiago!!!
Por um acaso você chegou a fazer o Deploy desse código no streamlit??? Funcionou direitinho o DB Postgres juntamente com o Streamlit??? Em localhost tudo funciona perfeitamente… porem ao realizar o deploy, aparece um erro relacionado ao pg_config da biblioteca psycopg2. Poderia me ajudar?
Tiago Dias
22 de fevereiro de 2023Fala Felipe! Me manda um e-mail (tiago@dadosaocubo.com) que te ajudo com sua dúvida.