Summary
I think I did not understand the mechanism about streamlit
- what variables is maintained after I clicked even a buttons ?
- Do I need to read data from database every time ?
Steps to reproduce
Code snippet:
@st.cache_data
def search_exe_version(selected_timestamp):
cur = conn.cursor()
sql_sytax = f'select * from fm."easy_exeVersion" where "timestamp" between {selected_timestamp - 5 * 60 * 1000} and {selected_timestamp + 5 * 60 * 1000}'
cur.execute(sql_sytax)
rows = cur.fetchall()
df = pd.DataFrame(rows)
cur.close()
return df
# Define the home page
def home():
global df_exeVersion
st.title("get Balance @ timestamp")
# Set the default date and time
default_date = datetime.now().date()
default_time = datetime(2023, 1, 1, 0, 0, 0).time()
# Display the date and time input widgets
selected_date = st.date_input('Select a date', default_date)
selected_time = st.time_input('Select a time', default_time)
# Combine the selected date and time
selected_datetime = datetime.combine(selected_date, selected_time)
utc_tz = pytz.UTC
selected_datetime = utc_tz.localize(selected_datetime)
selected_timestamp = int(selected_datetime.timestamp() * 1000)
# Display the selected date and time
st.write('You selected (in UTC) :', selected_datetime.strftime('%Y-%m-%d %H:%M:%S'))
st.write(f'And its timestamp(ms) is {selected_timestamp}')
# exe_version_list = []
if st.button('Search exeVersion'):
st.write('Search the exe version around the timestamp (+- 5min)')
df_exeVersion = search_exe_version(selected_timestamp)
st.write(df_exeVersion)
exe_version_list = df_exeVersion[0].unique()
selected_exe_version = st.selectbox('Select exeVersion', exe_version_list)
st.write(f'Selected exeVersion: {selected_exe_version}')
# Run the app
if __name__ == '__main__':
home()