emidiosouza commited on
Commit
9c64c2a
·
verified ·
1 Parent(s): fff85c6

feat: add delete function

Browse files
Files changed (1) hide show
  1. Início.py +40 -17
Início.py CHANGED
@@ -1,9 +1,10 @@
1
  import streamlit as st
2
  import pandas as pd
3
- from sqlalchemy import create_engine
 
4
  from filter import filter_dataframe
5
- import toml
6
  import os
 
7
 
8
  # Dados de login
9
  USERNAME = os.getenv("username")
@@ -52,12 +53,25 @@ def load_data() -> pd.DataFrame:
52
  connection_url = f"{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}"
53
 
54
  engine = create_engine(connection_url)
 
 
55
 
56
  with open('query.sql', 'r', encoding='utf-8') as file:
57
  query = file.read()
58
 
59
  df = pd.read_sql(query, engine)
60
- return df
 
 
 
 
 
 
 
 
 
 
 
61
 
62
  # Função para download dos dados como CSV
63
  def convert_df_to_csv(df):
@@ -73,23 +87,32 @@ if not st.session_state['logged_in']:
73
  else:
74
  st.header('⛰️ Banco de Dados - GeoCosmos')
75
 
76
- df = load_data()
77
 
 
78
  filtered_df = filter_dataframe(df)
79
 
80
- all_columns = filtered_df.columns.tolist()
81
- selected_columns = st.multiselect(
82
- 'Escolha as colunas para exibir:',
83
- options=all_columns,
84
- placeholder="Selecione uma ou mais colunas",
85
- default=[]
86
- )
87
 
88
- if selected_columns:
89
- displayed_df = filtered_df[selected_columns]
90
- else:
91
- displayed_df = filtered_df
 
 
 
 
 
 
92
 
93
- st.write('Tabela Atualizada')
94
- st.dataframe(displayed_df, column_order=selected_columns if selected_columns else None)
 
95
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import pandas as pd
3
+ from sqlalchemy import create_engine, MetaData, Table, delete
4
+ from sqlalchemy.orm import sessionmaker
5
  from filter import filter_dataframe
 
6
  import os
7
+ import time
8
 
9
  # Dados de login
10
  USERNAME = os.getenv("username")
 
53
  connection_url = f"{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}"
54
 
55
  engine = create_engine(connection_url)
56
+ Session = sessionmaker(bind=engine)
57
+ session = Session()
58
 
59
  with open('query.sql', 'r', encoding='utf-8') as file:
60
  query = file.read()
61
 
62
  df = pd.read_sql(query, engine)
63
+
64
+ return df, engine, session
65
+
66
+ # Função para deletar linhas selecionadas
67
+ def delete_selected_rows(selected_ids, engine, session):
68
+ meta = MetaData()
69
+ table = Table('Extraction', meta, autoload_with=engine)
70
+ with session.begin():
71
+ for id_value in selected_ids:
72
+ stmt = delete(table).where(table.c.id == id_value)
73
+ session.execute(stmt)
74
+ session.commit()
75
 
76
  # Função para download dos dados como CSV
77
  def convert_df_to_csv(df):
 
87
  else:
88
  st.header('⛰️ Banco de Dados - GeoCosmos')
89
 
90
+ df, engine, session = load_data()
91
 
92
+ # Aplica o filtro ao dataframe
93
  filtered_df = filter_dataframe(df)
94
 
95
+ # Adiciona a coluna de seleção
96
+ filtered_df.insert(0, 'Seleção', False)
 
 
 
 
 
97
 
98
+ # Exibe o dataframe filtrado com checkboxes para seleção
99
+ edited_df = st.data_editor(filtered_df, disabled=[col for col in filtered_df.columns if col != 'Seleção'], hide_index=True, column_order = [col for col in filtered_df.columns if col != 'id'])
100
+
101
+ # Verifica se há pelo menos um checkbox selecionado
102
+ selected_ids = edited_df.loc[edited_df['Seleção'], 'id'].tolist()
103
+
104
+ if selected_ids:
105
+ with st.popover("APAGAR"):
106
+ st.warning("Você está prestes a apagar dados. Esta ação não pode ser desfeita.")
107
+ confirmation = st.text_input("Digite 'APAGAR' e pressione ENTER para confirmar a deleção:")
108
 
109
+ if confirmation == "APAGAR":
110
+ delete_selected_rows(selected_ids, engine, session)
111
+ st.success(f'Linhas com IDs {selected_ids} foram deletadas.')
112
 
113
+ time.sleep(3)
114
+ st.rerun()
115
+ else:
116
+ st.write("")
117
+ else:
118
+ st.write("")