【Python】Webフレームワーク 「Flask」 ~ MySQLを使う ~

■ はじめに

 以下の関連記事を使って、Flask(フラスク)内で
MySQLに接続して、データをやり取りする
MySQLを使う
https://blogs.yahoo.co.jp/dk521123/37744753.html
テンプレートエンジン「jinja2」
https://blogs.yahoo.co.jp/dk521123/37744477.html

■ サンプル

 * データベース、テーブル、データは、以下の関連記事で使用したものと同じ
https://blogs.yahoo.co.jp/dk521123/37744753.html

main.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from flask import Flask, render_template
import pymysql

app = Flask(__name__)

def getDbConnection():
  return pymysql.connect(
    host="localhost",
    db="sample_db",
    user="root",
    password="password",
    charset="utf8",
    cursorclass=pymysql.cursors.DictCursor)

@app.route("/db/<int:id>")
def demo_mysql(id):

  connection = getDbConnection()
  cursor = connection.cursor()

  cursor.execute("SELECT * FROM person WHERE id=%s", id)
  person = cursor.fetchone()

  cursor.execute("INSERT INTO person(name) VALUES('Naomi')")
  connection.commit()
  
  cursor.execute("SELECT * FROM person")
  people = cursor.fetchall()

  cursor.close()
  connection.close()

  return render_template("db-sample.html", person_val = person, person_vals = people)

if __name__ == "__main__":
  app.run()

templates/db-sample.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Flask - Demo</title>
</head>
<body>
<h1>Sample</h1>

  <p>GET => [{{ person_val.id }}] {{ person_val.name }}!!!</p>

{% for person in person_vals: %}
  <p>[{{ person.id }}] Hello, {{ person.name }}!!!</p>
{% endfor %}
</body>
</html>

実行コマンド

python main.py
動作確認
 * 後は、ブラウザで以下にアクセスする
[[http://localhost:5000/db/2]]

関連記事

PythonMySQLを使う

https://blogs.yahoo.co.jp/dk521123/37744753.html

Webフレームワーク 「Flask」 ~ Hello World編 ~

https://blogs.yahoo.co.jp/dk521123/37736310.html

Webフレームワーク 「Flask」 ~ テンプレートエンジン「jinja2」 ~

https://blogs.yahoo.co.jp/dk521123/37744477.html

Webフレームワーク 「Flask」 ~ SQLAlchemyでMySQLを操作する ~

https://blogs.yahoo.co.jp/dk521123/37745238.html

Webフレームワーク 「Flask」 ~ SQLAlchemyでテーブルを連結する ~

https://blogs.yahoo.co.jp/dk521123/37746541.html