はじめに
Streamlit のキャッシュ管理は、今までst.cache
、st.experimental_memo
、st.experimental_singleton
で対応していましたが、
バージョン 1.18.1 から@st.cache_data
とst.cache_resoure
に変わりました。
DataFrame の読み込みや API 経由でのデータ取得、NumPy Array の計算といったものはst.cache_data
、
DB 接続や機械学習モデルのロードはst.cache_resoure
だそうです。
内容
簡単な使い方
DB に接続して、df を取得してみましょう。
import streamlit as st
import pandas as pd
@st.cache_resource
def get_db_engin():
"""DB接続"""
SQLALCHEMY_DATABASE_URL = "sqlite:///hoge.db"
engine = create_engine(
SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}
)
return engine
@st.cache_data
def get_df():
engine = get_db_engin()
df = pd.read_sql(sql="SELECT * FROM fugas", con=engine)
return df