I have the code below that reads the user's login and password from a mainfile.csv
using streamlit.
This code raises a deprecation warning, saying that st.cache_data
is deprecated in streamlit:
# Define the file path
FILE_PATH = "/content/drive/MyDrive/Streamlit/login/mainfile.csv"
# Use st.cache_data for data loading
@st.cache_resource
def load_data(file_path):
try:
df = pd.read_csv(file_path)
return df
except Exception as e:
st.error(f"Error loading data: {e}")
return pd.DataFrame()
I tried many ways to solve it like upgrading streamlit, or changing the version of streamlit. I also tried to use @st.cache
, @st.cache_resources
(in place of @st.cache_data
) but it didn't work.
Every time it shows that @st.cache
is deprecated.
The issue arises because you are using @st.cache_resource for caching data, which is meant for resources that don't need to be recomputed often (e.g., database connections). For data-loading functions, the correct decorator is @st.cache_data, which replaced @st.cache in newer Streamlit versions.
Here’s how you can modify your code:
import streamlit as st
import pandas as pd
# Define the file path
FILE_PATH = "/content/drive/MyDrive/Streamlit/login/mainfile.csv"
# Use st.cache_data for data loading
@st.cache_data
def load_data(file_path):
try:
df = pd.read_csv(file_path)
return df
except Exception as e:
st.error(f"Error loading data: {e}")
return pd.DataFrame()
For more details, you can refer to the official Streamlit documentation: Streamlit Caching.