wrong id
This commit is contained in:
48
main.py
48
main.py
@@ -1,16 +1,50 @@
|
||||
# streamlit_app.py
|
||||
import pandas as pd
|
||||
import streamlit as st
|
||||
from loguru import logger
|
||||
|
||||
from bak.init_data import BatchDataRead
|
||||
from db_utils import BatchData, session
|
||||
from db_utils import BatchData, get_session
|
||||
|
||||
df = pd.DataFrame(
|
||||
data=(BatchDataRead.from_orm(db_obj).dict()
|
||||
for db_obj in session.query(BatchData).all())
|
||||
)
|
||||
st.session_state.setdefault('data_table', [])
|
||||
|
||||
edited_df = st.data_editor(df) # 👈 An editable dataframe
|
||||
|
||||
def get_data_from_db():
|
||||
logger.info("init")
|
||||
return (BatchDataRead.from_orm(db_obj).dict()
|
||||
for db_obj in next(get_session()).query(BatchData).all())
|
||||
|
||||
|
||||
# logger.debug(st.session_state.data_table)
|
||||
# if not st.session_state.data_table:
|
||||
st.session_state.data_table = get_data_from_db()
|
||||
|
||||
df = pd.DataFrame(data=st.session_state.data_table)
|
||||
|
||||
|
||||
def update_handler(*args, **kwargs):
|
||||
logger.debug(f"{args=}, {kwargs=}")
|
||||
|
||||
|
||||
edited_df = st.data_editor(df, key="edited_info",
|
||||
hide_index=True,
|
||||
on_change=update_handler,
|
||||
column_order=('id', 'year', 'is_validation'),
|
||||
use_container_width=True) # 👈 An editable dataframe
|
||||
|
||||
favorite_command = edited_df.loc[edited_df["id"].idxmax()]
|
||||
st.markdown(f"Your favorite command is **{favorite_command}** 🎈")
|
||||
data_table_change_info = st.session_state['edited_info']
|
||||
logger.debug(f"{data_table_change_info=}")
|
||||
|
||||
edited_rows = data_table_change_info.get('edited_rows')
|
||||
session = next(get_session())
|
||||
for id_, update_data in edited_rows.items():
|
||||
row_db = session.query(BatchData).where(BatchData.id == id_).first()
|
||||
for field in update_data:
|
||||
setattr(row_db, field, update_data[field])
|
||||
session.add(row_db)
|
||||
session.commit()
|
||||
# logger.info(f"{BatchDataRead.from_orm(row_db)}")
|
||||
st.text(f"update: {id_=}, {update_data=}")
|
||||
|
||||
logger.info('end')
|
||||
|
||||
Reference in New Issue
Block a user