flask を始める — まずはデータベース読み込み

django でいくつかの初級的なプログラムは作成したのですが、もう少し上に行こうとすると全く進みません。
例えば、ログインしてチャットするというようなものは未だに作ることができません。

dcm4chee を久しぶりに触ってみて、ローカルの flask から ubuntu server 上のデータベースを読み込んで操作できないかと思いました。

参考サイト

flask のインストール


pip install Flask

とても簡単。
mysql を使うためには PyMySQL もインストールする必要があります。


pip install PyMySQL

作業用フォルダ作成と各ファイル配置


mkdir ~/flask
cd flask
hello.py

from flask import Flask, render_template
import pymysql

app = Flask(__name__)

@app.route('/')
def hello():
    db = pymysql.connect(
            host='localhost',
            user='root',
            password='pass',
            db='lapis',
            charset='utf8',
            cursorclass=pymysql.cursors.DictCursor,
        )
    cur = db.cursor()
    sql = "select * from kensa limit 30"
    cur.execute(sql)
    members = cur.fetchall()
    cur.close()
    db.close()
    return render_template('hello.html', title='flask test', members=members) 

if __name__ == "__main__":
    app.run(debug=True)
templates/layout.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/mystyle.css') }}">
</head>
<body>
<div id="container">
	<div id="main">
		{% block content %}
		<!-- ここにメインコンテンツを書く -->
		{% endblock %}
	</div>	
</div>
</body>
</html>
templates/hello.html
{% extends "layout.html" %}
{% block content %}
<h1>一覧</h1>
<table class="datashow">
	<tr><th>日付</th><th>カルテ番号</th></tr>
	{% for member in members %}
		<tr><td>{{ member.hizuke}}</td><td>{{ member.karteNo }}</td></tr>
	{% endfor %}
</table>
{% endblock %}

全体的な構造は以下のような感じで。
js はまだ使いませんが、一応配置しておきます。


.
├── hello.py
├── static
│   ├── css
│   │   └── mystyle.css
│   └── js
│       └── jquery-3.2.1.min.js
└── templates
    ├── hello.html
    └── layout.html

flask の起動は、


python hello.py

http://localhost:5000/ にアクセスすると、

これはすごい。