🎉
StreamlitとSnowflakeを接続する
はじめに
Streamlit App-A-Thon Contestが開かれるということで、ますますStreamlitの熱が帯びてきた様子を感じます。
非常に時代遅れ気味ではありますが.... StreamlitとSnowflakeを接続する流れを書いていきたいと思います。また手順は基本的に『Connect Streamlit to Snowflake』に倣って進めていきます。
実施環境
Ubuntu: 22.04
Python: 3.10.6
想定するディレクトリ構成
.
├── .streamlit
│ ├── secrets.toml
├── streamlit_app.py
Snowflake側の作業
Snowflake側でまずはデータベース及びテーブルの作成を行います。
CREATE DATABASE PETS;
CREATE TABLE MYTABLE (
NAME varchar(80),
PET varchar(80)
);
INSERT INTO MYTABLE VALUES ('Mary', 'dog'), ('John', 'cat'), ('Robert', 'bird');
SELECT * FROM MYTABLE;
VSCode側の作業
- pipをインストールします
python -m ensurepip --upgrade
sudo apt-get install python3-pip
- Streamlitをインストールします
pip install streamlit
- Snowflakeコネクターをインストールします
pip install snowflake-connector-python
- 接続情報を載せるためのtomlファイルを書きます
# .streamlit/secrets.toml
[snowflake]
user = "xxx"
password = "xxx"
account = "xxx" # <account_identifier>.snowflakecomputing.com
warehouse = "xxx"
database = "xxx"
schema = "xxx"
- Streamlit用にサンプルコードをコピペします
# streamlit_app.py
import streamlit as st
import snowflake.connector
# Initialize connection.
# Uses st.cache_resource to only run once.
@st.cache_resource
def init_connection():
return snowflake.connector.connect(
**st.secrets["snowflake"], client_session_keep_alive=True
)
conn = init_connection()
# Perform query.
# Uses st.cache_data to only rerun when the query changes or after 10 min.
@st.cache_data(ttl=600)
def run_query(query):
with conn.cursor() as cur:
cur.execute(query)
return cur.fetchall()
rows = run_query("SELECT * from mytable;")
# Print results.
for row in rows:
st.write(f"{row[0]} has a :{row[1]}:")
- Streamlitを実行します
streamlit run streamlit_app.py
- ブラウザーで確認します
最後に
最近Streamlit触りたい欲が出てきたので、下準備のためにも書きました。より良い方法などあれば教えて頂ければと思います!
Discussion