演習課題「テーブルを左結合して表示する」
右の環境には、FlaskでMySQLからplayersテーブルのデータを表示するプログラムが作成してあります。
このファイルを修正して、playersテーブルとjobsテーブルを左結合して、全データを表示してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
※ 採点時は、フォームにアクセスできる状態にしてください。
#05:Pythonでテーブルを連結してデータを取り出す
ここでは、複数のテーブルを結合して扱う方法を学んでいきます。SQLを使って、mydbデータベースの「players」テーブルの「job_id」と「jobs」テーブルの「id」を結合します。
myapp/hello.pyfrom flask import Flask, render_template
import pymysql
app = Flask(__name__)
def getConnection():
return pymysql.connect(
host='localhost',
db='mydb',
user='root',
password='',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
@app.route('/')
def select_sql():
connection = getConnection()
message = "Hello world"
sql = "SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id"
cursor = connection.cursor()
cursor.execute(sql)
players = cursor.fetchall()
cursor.close()
connection.close()
return render_template('view.html', message = message, players = players)
myapp/templates/view.html{% extends "layout.html" %}
{% block content %}
<h1>Hello SQL</h1>
<p>{{ message }}</p>
{% for player in players %}
<p>{{ player }}</p>
{% endfor %}
{% endblock %}
$ FLASK_APP=hello.py FLASK_ENV=development flask run
テーブルの結合とは、重複したデータのテーブルを分割しておいて、必要に応じて、仮想的な1つの表として連結して扱う方法です。このようにテーブルを結合することを「リレーション」とか「連結」「関連付け」と呼ぶ場合もあります。
# 左結合
SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id
DB/SQL入門編(2レッスン) | プログラミング学習ならpaizaラーニング
https://paiza.jp/works/sql/primer