Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonからMySQLのIF()関数を使う方法|SELECT文で条件分岐してデータを判定する

MySQLのIF()関数は、条件に応じて異なる値を返すための条件分岐用の関数です。指定した条件が真(TRUE)の場合と偽(FALSE)の場合で、それぞれ別の値を返すことができます。

この記事では、PythonからMySQLデータベースに接続し、SELECT文の中でIF()関数を活用してデータを条件付きで取得する方法を解説します。

IF()関数の構文

IF(条件, 真の場合の値, 偽の場合の値)

IF()関数はSELECT句と組み合わせて使用でき、特定の基準に基づいて取得結果を切り替えることができます。

PythonでMySQLのテーブルからIF()関数を使ってデータを取得する手順

  • mysql.connectorモジュールをインポートする

  • connect()メソッドでデータベースとの接続を確立する

  • cursor()メソッドでカーソルオブジェクトを作成する

  • 適切なSQL文でクエリを作成する

  • execute()メソッドでSQLクエリを実行する

  • 接続を閉じる

ここでは、次のような「MyTable」というテーブルを例に説明します。

+----------+---------+
|    id    | value   |
+----------+---------+
|        1 |   200   |
|        2 |   500   |
|        3 |  1000   |
|        4 |   600   |
|        5 |   100   |
|        6 |   150   |
|        7 |   700   |
+----------+---------+

サンプルコード

上記のテーブルに対して、IF()関数を次のように使います。

import mysql.connector
db = mysql.connector.connect(host="your host", user="your username", password="your password", database="database_name")

cursor = db.cursor()

query = "SELECT value, IF(value > 500, 'PASS', 'FAIL') FROM MyTable"
cursor.execute(query)

for row in cursor:
    print(row)
db.close()

実行結果

(200, 'FAIL')
(500, 'FAIL')
(1000, 'PASS')
(600, 'PASS')
(100, 'FAIL')
(150, 'FAIL')
(700, 'PASS')

このコードでは、valueが500より大きい行には「PASS」、それ以外の行には「FAIL」が割り当てられます。valueがちょうど500の場合は「500より大きい」という条件を満たさないため、「FAIL」になる点に注意してください。

IF()関数を使えば、SQL側で条件分岐を完結させられるため、取得したデータをそのまま判定結果として利用できます。アプリケーション側での後処理を減らしたい場合に非常に便利な手法です。

  1. WindowsでPythonを使う方法|インストールから実行・モジュール導入まで完全解説

    初心者にも学びやすいプログラミング言語の代表格として、Pythonは世界中の何百万人ものコーダーに選ばれています。学習のハードルが低く、Windows・macOS・Linuxなど主要なOSすべてでサポートされており、Webサイト開発からデスクトップゲーム制作まで、幅広いプロジェクトに活用できるのが魅力です。 macOSやLinuxではPythonが最初からインストールされていることが多い一方、Windowsではいくつか追加の手順を踏む必要があります。この記事では、WindowsでPythonをインストールし、実際に使い始めるまでの流れをわかりやすく解説します。 WindowsへのPyt

  2. Pythonでネストされたif文(入れ子構造)を使う方法をわかりやすく解説

    ネストされたif文とは?プログラミングにおける「ネスト(入れ子)」とは、条件分岐のステートメントが別のステートメントの内部に配置されている状態を指します。Pythonでは、新しいif文をifブロックの中にも、elseブロックの中にもネストすることが可能です。ご存知のとおり、Pythonではインデント(字下げ)によってコードブロックの階層を表現します。そのため、ネストされたif条件の場合は、内側のブロックのインデントレベルが外側のブロックより一段深くなります。ネストされたif文の基本構文ネストされたif文の一般的な構文は以下のとおりです。if expr1==True:  &n