ルート関数
http://localhost:8001/
にアクセスしたときに呼び出される関数(勝手に「ルート関数」と呼んでいます)は、fastapi\app\prog\p00.y にあるdef root_function()です。
@router.get('/')
def root_function():
'''ルート関数。データの一覧表を出力する
'''
conn = mydb.connect(**config.database)
# (中略 データベースを開いてデータを取り出す)
template = env_j2.get_template('html00.j2') #テンプレートを利用して出力データを整える
main = template.render(table_caption='観光施設一覧' , institutions=institutions)
# (中略)
# データを返す
return HTMLResponse(content=head + main + footer + "\n</body>\n</html>\n")
MySQLへのアクセス
SQLAlchemyというライブラリを使うことが標準みたいですが、SQLを書くことができるmysql-connector-pythonを利用しました。
MySQLのストレージエンジン
MySQLは色々なストレージエンジンを使うことができますが、InnoDBが良いとされています。
しかし、コールドバックアップができるという1点のため、MyISAMを使っています。
コールドバックアップは、MySQLを止めてからファイルをコピーするのですが、私は、誰もアクセスしていない時間に、MySQLを止めずに、ディレクトリごと圧縮・コピーしています。
MySQLのカラム名
カラム名に日本語(マルチバイトコード)を使っています。
最初は怖かったのですが、今のところ問題なく動いています。
UTF-8なので、ソースコードのラベル(関数、変数名など)にも、日本語が使えるはずなのですが、怖いのでやったことがありません。
ページ(データ)出力
root_function()関数で出力するデータを整えています。
前半で、データベースからデータを取り出し、後半でテンプレートにデータを流し込んで、HTML形式でデータをクライアントに返しています。
テンプレートは、html90.j2 , html99.j2 , html00.j2 と3つ使っています。3つに分けるのが良いかどうかわかりません。
のような画面ができます。
ファイル名について
普通の人は、「load_data.py」とか「save_data.py」などと機能が分かる名前を付けると思いますが、私は、英語の名前を考えるのが面倒なので、通番にしています。案外便利です。
関連記事一覧
htmxを使ってみた-(1)htmxの基本-
htmxを使ってみた-(2)準備-
htmxを使ってみた-(3)ルート関数-
htmxを使ってみた-(4)htmxを使う-
htmxを使ってみた-(5)HTMLのdialog-
htmxを使ってみた-(6)データの表示-
htmxを使ってみた-(7)データ追加-
htmxを使ってみた-(8)要素の変更-
htmxを使ってみた-(9)ページの再読み込み-
htmxを使ってみた-(10)データの変更-
htmxを使ってみた-(11)データベースの排他制御-
htmxを使ってみた-(12)確認ダイアローグ-
htmxを使ってみた-(13)データ削除-(最終)