Python で MySQL - データ取得 (select)

ここでは Python で MySQL のテーブルからデータを取得 (select) する方法についてご説明します。

MySQL Connector をインストールしていない方は、「Python で MySQL に接続する」をご参考に、MySQL に接続できる状態にしておいてください。

Python で MySQL のテーブルからデータを取得 (select) する

Python で MySQL Connector を使って、テーブルからレコードを取得してみましょう。

test データベースの student テーブルに「Python で MySQL - データの挿入 (insert)」で挿入したレコードから、gender が M のレコードを取得します。

import mysql.connector

cnx = None

try:
    cnx = mysql.connector.connect(
        user='root',  # ユーザー名
        password='password',  # パスワード
        host='localhost',  # ホスト名(IPアドレス)
        database='test'  # データベース名
    )

    cursor = cnx.cursor()

    sql = ('''
    SELECT  first_name, last_name, gender
    FROM    student
    WHERE   gender = %s
    ''')

    param = ('M',)

    cursor.execute(sql, param)

    for (first_name, last_name, gender) in cursor:
        print(f"{first_name} {last_name} ({gender})")

    cursor.close()

except Exception as e:
    print(f"Error Occurred: {e}")

finally:
    if cnx is not None and cnx.is_connected():
        cnx.close()

上のコードを実行すると、次のように、gender が M のレコードの名前と性別が出力されます。

Shota Sato (M)
Hiroki Takagi (M)

まず、1 行目で mysql.connector をインポートして、6 ~ 11 行目で、connect() メソッドに、MySQL のユーザー名、パスワード、ホスト名、データベース名を渡してコネクションを生成しています。

13 行目で cursor を生成し、15 ~ 19 行目で student テーブルからデータを取得する SELECT 文のクエリーを定義しています。

21 行目で、SELECT 文の %s に入る値を定義しています。気をつけないといけないのは、引数はタプルで定義しますが、要素がひとつのタプルを定義したい時は、('M',) のようにひとつ目の要素の後ろにカンマをつけないと、タプル型ではなく文字列型になってしまい、execute でエラーになりますのでご注意ください。

23 行目で cursor.execute(sql, param) で引数を指定して SELECT 文を実行しています。

25 ~ 26 行目で、SELECT 文の結果をループし、各レコードの first_name、last_name、gender を順番に print しています。


以上、Python で MySQL のテーブルからデータを取得 (select) する方法についてご説明しました。

© 2024 やさしい Python 入門