Flask-SQLAlchemyの基本的な使い方。MySQLを使います

Flask-SQLAlchemyの基本的な使い方について簡単に紹介します。

公式のチュートリアルとは異なりMySQLを使います。

基本事項

バージョン等

  • Python 3.6.0

Flask-SQLAlchemyとは

Flask-SQLAlchemyはFlaskからSQLAIchemyを簡単に使いやすくしたものです。

SQLAlchemyとはかなり簡単に言うとPythonからのDBとのやり取りをかなり簡単に行うためのツールです。
オブジェクト指向とデータベースをうまく繋げるORM(Object-relational mapping)を採用しています。
良くも悪くもSQL文を直接書かないでもDBとやり取りができます。

インストール方法

インストール方法はpipを使えば簡単です。

基本的な操作例

ここでは、基本的なFlask-SQLAlchemyの操作方法を紹介します。

まずは必要なモジュールのimportとFlaskのアプリを初期化します。

データベースへの接続

まずはじめにデータベースに接続します。

MySQLの設定は app.config のSQLALCHEMY_DATABASE_URIに書いていきます。
app.config にDBの設定を書いたらSQLAlchemyでDBの初期化をします。

テーブルの作成

テーブルを作成していきます。テーブルはモデルと同様の構成になりますので、Classを定義する要領で指定することができます。以下のコードで定義します。

テーブルの変数は db.Column で定義できます。恐らくsqlが多少わかる人であればどのようなテーブルを設定しているかはわかると思います。

Classの定義を終えたら db.create_all() を実行することでDBにテーブルが作成されます。

INSERT:レコードの追加

INSERTの処理を実装します。
Flaskを使うのWebアプリっぽく実装します。
ここでは、POSTリクエストが来たらその値をDBに保存するような処理を書いてみます。

テーブルにレコードを追加する時には、まず先程定義したClassでインスタンスを作成します。
そしてそのインスタンスを db.session.add() にいれることでテーブルに追加できます。
addした後にdbに変更を反映させるために db.session.commit() を行います。これでレコードが追加できました。

試しに上記のコードを試したい場合、ここまでのコード貼り付けて普通に実行してWebサーバーを起動させて、以下のコマンドでPOSTリクエストを送ってください。

SELECT:レコードの取り出し

レコードを取り出してみます。
ここでは、GETリクエストがあればすべてのレコードを返却するようにしてみます。

レコードすべてを取り出す時は簡単で query.all()を実行すればすべてのレコードを取ってこれます。
良くも悪くもsqlを書かなくても良いので簡単です。

終わりに

今回はFlask-SQLAlchemyの基本的な使い方について紹介しました。
私も初心者なので間違い等があるかもしれません。
もしあれば教えていただければと思います。

参考文献

Quickstart — Flask-SQLAlchemy Documentation (2.x)
SQLAlchemyについて — study flask 1 ドキュメント
タイトルとURLをコピーしました