データベースの作成
今回はデータベースとしてsqlite3を使っていきたいと思います。
まずはSqlite3でデータベースのテーブルを作成しておきます。
import sqlite3
# SQLiteデータベースを作成
conn = sqlite3.connect('example.db')
c = conn.cursor()
# テーブルを作成
c.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)''')
# データベースに変更を保存
conn.commit()
conn.close()
import sqlite3
この行では、Pythonの標準ライブラリである sqlite3
をインポートしています。これはSQLiteデータベースを操作するためのライブラリです。
# SQLiteデータベースを作成
conn = sqlite3.connect('example.db')
ここでは、SQLiteデータベースを作成するために sqlite3.connect
を使用しています。'example.db'
という名前のSQLiteデータベースファイルに接続しています。もし指定したデータベースファイルが存在しない場合、新しいデータベースファイルが作成されます。
c = conn.cursor()
この行では、SQLiteデータベースとの対話を行うためにカーソル(cursor
)を作成しています。カーソルはSQLクエリの実行やデータの操作を行うためのインタフェースを提供します。
# テーブルを作成
c.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)''')
ここでは、SQLiteデータベース内に新しいテーブルを作成しています。テーブルの名前は “users” で、3つの列を持っています。列の名前とデータ型は次の通りです:
– id
: INTEGER型の主キー(PRIMARY KEY)
– name
: TEXT型
– email
: TEXT型
このコードは、テーブルがまだ存在しない場合にのみテーブルを作成しています。既にテーブルが存在する場合、新たに作成はしません。
# データベースに変更を保存
conn.commit()
データベースへの変更を保存するために、conn.commit()
を呼び出しています。これにより、テーブルの作成がデータベースに反映されます。
conn.close()
最後に、データベース接続をクローズしています。データベースの作成とテーブルの作成が完了した後、データベース接続を閉じ忘れないようにしましょう。
アプリ部分のコード作成
続いて、アプリ部分のコードは以下のように作成します。
基本的には一覧の表示と新しいデータの追加を行っているシンプルなものです。
これでデータベースの使い方のイメージを持っていただければと思います。
# 必要なライブラリをインポート
import streamlit as st
import sqlite3
# データベースに接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Streamlitアプリケーションを定義
st.title('データベースアプリ')
# データベースからユーザー一覧を取得する関数
def fetch_users():
result = c.execute("SELECT * FROM users").fetchall()
return result
# ユーザー一覧を表示
st.write("ユーザー一覧:")
users = fetch_users()
for row in users:
st.write(f"ID: {row[0]}, 名前: {row[1]}, メール: {row[2]}")
# ユーザー情報の入力フォーム
st.subheader("新しいユーザーを追加")
new_name = st.text_input("名前")
new_email = st.text_input("メール")
# フォームが送信されたらデータベースに新しいユーザーを挿入
if st.button("追加"):
c.execute("INSERT INTO users (name, email) VALUES (?, ?)", (new_name, new_email))
conn.commit()
st.success("ユーザーが追加されました")
# データベース接続をクローズ
conn.close()
コードの解説
# 必要なライブラリをインポート
import streamlit as st
import sqlite3
この部分では、streamlit
および sqlite3
ライブラリをインポートしています。streamlit
はアプリケーションのUIを構築するために使用され、sqlite3
はSQLiteデータベースとの対話を可能にします。
# データベースに接続
conn = sqlite3.connect('example.db')
c = conn.cursor()
ここでは、SQLiteデータベースに接続しています。sqlite3.connect('example.db')
は example.db
という名前のSQLiteデータベースに接続します。この接続を使用してデータベースを操作できます。
# Streamlitアプリケーションを定義
st.title('データベースアプリ')
ここでは、Streamlitアプリケーションのタイトルを設定しています。このタイトルはアプリケーションのUIに表示されます。
# データベースからユーザー一覧を取得する関数
def fetch_users():
result = c.execute("SELECT * FROM users").fetchall()
return result
この部分では、データベースからユーザー一覧を取得するための関数 fetch_users
を定義しています。この関数はSQLクエリを使用してデータベースからユーザー情報を取得し、結果を返します。
# ユーザー一覧を表示
st.write("ユーザー一覧:")
users = fetch_users()
for row in users:
st.write(f"ID: {row[0]}, 名前: {row[1]}, メール: {row[2]}")
ここでは、ユーザー一覧を表示しています。st.write("ユーザー一覧:")
はユーザー一覧のタイトルを表示し、fetch_users
関数を使用してユーザー情報を取得し、それをループで表示しています。
# ユーザー情報の入力フォーム
st.subheader("新しいユーザーを追加")
new_name = st.text_input("名前")
new_email = st.text_input("メール")
この部分では、新しいユーザー情報を入力するためのフォームを表示しています。st.subheader("新しいユーザーを追加")
はフォームのタイトルを表示し、st.text_input
を使用して名前とメールの入力フィールドを表示しています。
# フォームが送信されたらデータベースに新しいユーザーを挿入
if st.button("追加"):
c.execute("INSERT INTO users (name, email) VALUES (?, ?)", (new_name, new_email))
conn.commit()
st.success("ユーザーが追加されました")
この部分では、フォームが送信されたときに新しいユーザー情報をデータベースに挿入するコードがあります。st.button("追加")
は「追加」ボタンを表示し、ボタンがクリックされると新しいユーザー情報がデータベースに挿入され、成功メッセージが表示されます。
# データベース接続をクローズ
conn.close()
最後に、データベース接続をクローズして、データベースリソースを解放しています。このコードがないと、データベースが正しく閉じられない可能性があります。
使い方イメージ
データを追加
ユーザー名とメールアドレス入力し、データベースにデータを追加します。
データの表示
そのままだと変更が反映されないので、リロードすると一覧が表示されます。
データベースが使えるようになるとできることの幅が広がるので、ぜひ、データベースの使い方をマスターしてください!
GoogleColabのコード