Flask - データベースからデータを取得

Flask を使ったWebサービスで、データベースにアクセスして取得したデータをブラウザに表示する処理を実装していきます。

データベースは MySQL を想定しています。

app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from flask import Flask, render_template
import pymysql
app = Flask(__name__)

def getConnection():
return pymysql.connect(
host='ホストのIPアドレス',
db='データベース名',
user='ユーザ名',
password='パスワード',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)

@app.route('/')
def select_sql():
connection = getConnection()
message = "Hello world"

sql = "SELECT * FROM players"
cursor = connection.cursor()
cursor.execute(sql)
players = cursor.fetchall()

cursor.close()
connection.close()

return render_template('view.html', players = players)

データを表示するhtmlファイルのサンプルは下記のとおりです。
(layout.htmlの記載は省略しています。)

view.html
1
2
3
4
5
6
7
{% extends "layout.html" %}
{% block content %}
{% for player in players %}
<p>{{ player }}</p>
{% endfor %}

{% endblock %}