日経ソフトウェア誌2019年3月号に掲載された、清水美樹氏による記事、『Python向けフレームワーク Flask+SQLite3でWeb-DBアプリ開発! ~「蔵書管理データベース」で基本をマスターしよう~』は良い記事でした。本稿では、さわりの部分を紹介します。詳しい説明と最後までやってみたい方は、雑誌を入手してみてください。
開発環境の準備
Flask(フラスク)は、プログラミング言語Python用の、軽量なウェブアプリケーションフレームワークです。Anacondaに同梱されています。
まず、Anacondaのサイトからインストーラをダウンロードします。サイトの上部左の”Products”から”Individual Edition”をクリック、「Download」ボタンをクリックして下にスクロール、Windows、MacOS、Linuxから選択します。Python3.X系を選択して下さい。
Linuxの場合
ダウンロードしたシェルを実行します。
$ ls
Anaconda3-2020.02-Linux-x86_64.sh
$ bash ./Anaconda3-2020.02-Linux-x86_64.sh
途中、インストーラが確認してくるので、yes/no/Enterなどを押して対話的にインストールを進めます。途中で以下のように初期化するかを聞いてくる箇所があり、筆者は”yes”を選択しました。
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes
インストールが完了したら、動作確認をします。なお、上記初期化の選択で”no”を選択した場合は、別途パスを通す必要があります。
$ source ~/.bashrc
$ conda -V
conda 4.8.2
Jupyter notebookを起動してみます。
$ jupyter notebook
MacOS、Windowsの場合
GUIベースでインストールできます。
Flaskで初めてのWebアプリ開発
適当な場所に作業フォルダを作成します。
mkdir flask-test
エディタを起動し、上記のフォルダに移動して、”hello.py”ファイルを作成、以下のコードを入力します。
from flask import Flask myapp = Flask(__name__) @myapp.route('/') def index(): return 'こんにちは'
Webサーバを起動してコードを実行
ターミナルから次の環境変数を設定します。
MacOS,Linux
export FLASK_APP="hello.py"
export FLASK_ENV="development"
Windows(PowerShell)
$env:FLASK_APP="hello.py"
$env:FLASK_ENV="development"
Webサーバを立ち上げます。
flask run
ブラウザからWebサーバにアクセスします。
http://localhost:5000/
ブラウザに「こんにちは」と表示されます。
PythonでSQLite3を操作してみる
エディタで”sqltest.py”を作成。以下のコードを入力。これは、SQLite3によってDBの作成、レコードの追加、レコードの選択を実施するコードです。
import sqlite3 CREATE_TABLE = '''create table books (id integer primary key autoincrement, author text, title text)''' TEST_INSERT = '''insert into books (title, author) VALUES ('プリンキピア','ニュートン') ''' TEST_SELECT = "select * from books" conn = sqlite3.connect('testdb.sqlite3') c = conn.cursor() c.execute(CREATE_TABLE) c.execute(TEST_INSERT) conn.commit() c.execute(TEST_SELECT) result = c.fetchone() print(result) conn.close()
次のコマンドを実行します。
python sqltest.py
次のように表示されます。
(1, 'ニュートン', 'プリンキピア')
データベースのファイル(testdb.sqlite3)が作成されていることを確認します。
MacOS,Linux
$ ls -l
total 32
-rw-r--r-- 1 apple staff 453 5 22 16:48 sqltest.py
-rw-r--r-- 1 apple staff 12288 5 22 16:48 testdb.sqlite3
Windows(PowerShell)
> ls
ディレクトリ: C:\works\flask\flask-test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2020/05/21 18:08 472 sqltest.py
-a---- 2020/05/21 18:08 12288 testdb.sqlite3