Skip to content

RyosukeDTomita/flask_playground

Repository files navigation

Flask playground

un license

INDEX


ABOUT

Try to use Flask's features. Flaskの機能を試すためのリポジトリ


ENVIRONMENT

  • Python: 3.12.4
    • Flask
    • rye

see Dockerfile and pyproject.toml in detail.


PREPARING

Using Dev Container

open VSCode and use Dev Containers: Rebuild Container without cache

Not Using Dev Container

cd flask_playground
docker compose up

HOW TO USE

Flask REST API

In Dockerfile, gunicorn activates flask app.

/flask/.venv/bin/gunicorn app:run --chdir /flask/src

Go to http://localhost:8000 and you can see the Hello World message.

Flask CLI

cd /flask/src
/flask/.venv/bin/flask hello say --name sigma

Flask Migrate

mydatabase only

Warning

This repository uses multiple databases.

before flask db upgrade, you can see only alembic_version table.

cd /flask/src
/flask/.venv/bin/flask db init
/flask/.venv/bin/flask db migrate
mysql -h mysql_svr -u root -p
mysql> USE mydatabase;
Database changed
mysql> SHOW TABLES;
+----------------------+
| Tables_in_mydatabase |
+----------------------+
| alembic_version      |
+----------------------+
1 row in set (0.00 sec)
/flask/.venv/bin/flask db upgrade
mysql> SHOW TABLES;
+----------------------+
| Tables_in_mydatabase |
+----------------------+
| alembic_version      |
| users                |
+----------------------+
2 rows in set (0.00 sec)

multiple databases

Multiple Database with bind

mysql -h mysql_svr -u root -p
USE mydatabase;
DROP TABLE alembic_version;
drop table users;
CREATE DATABASE mydatabase_alt; -- flask db cannot create database
rm -rf migrations # if any
/flask/.venv/bin/flask db init --multidb

memo

rye

  • rye installではpyproject.tomlのdependenciesにライブラリが追加されない。これがしたいなら,rye addを使う。
  • rye run python run.pyのようにすると,venv内のpythonを使って.pyを実行できる。
  • rys syncするとpyproject.tomlのdependenciesに記述されたライブラリがvenvにインストールされる。