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

Pythonでのデータベース読み取り(READ)操作の基本 ― fetchone()とfetchall()の使い方

データベースにおけるREAD操作とは、データベースから必要な情報を取得することを意味します。

データベース接続が確立されたら、そのデータベースに対してクエリを実行する準備は完了です。単一のレコードを取得したい場合はfetchone()メソッドを、複数の値をまとめて取得したい場合はfetchall()メソッドを使用します。

  • fetchone() − クエリ結果セットの次の行を1件取得します。結果セットとは、カーソルオブジェクトを使ってテーブルにクエリを実行した際に返されるオブジェクトのことです。
  • fetchall() − 結果セット内のすべての行を取得します。すでに一部の行が抽出されている場合は、残りの行のみを取得します。
  • rowcount − 読み取り専用の属性で、execute()メソッドによって影響を受けた行数を返します。

実装例

以下の例では、EMPLOYEEテーブルから給与(INCOME)が1000より大きいすべてのレコードを照会しています。

#!/usr/bin/python3
import MySQLdb

# データベース接続を開く
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB")

# cursor()メソッドでカーソルオブジェクトを準備
cursor = db.cursor()

sql = "SELECT * FROM EMPLOYEE \
       WHERE INCOME > '%d'" % (1000)

try:
    # SQLコマンドを実行
    cursor.execute(sql)
    # すべての行をリストとして取得
    results = cursor.fetchall()
    for row in results:
        fname = row[0]
        lname = row[1]
        age = row[2]
        sex = row[3]
        income = row[4]
        # 取得した結果を表示
        print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
              (fname, lname, age, sex, income))
except:
    print("Error: unable to fetch data")

# サーバーから切断
db.close()

出力結果

上記のコードを実行すると、次のような結果が出力されます。

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

補足ポイント

  • MySQLdbは古いライブラリのため、Python 3環境では「mysqlclient」や「PyMySQL」などの利用が推奨されます。
  • SQLインジェクション対策として、実運用では文字列フォーマットではなく、パラメータ化されたクエリ(プレースホルダ)を使用することが安全です。
  1. Pythonの「<>」演算子とは?Python 2とPython 3での違いを解説

    Pythonには、2つの値が「等しくない」ことを判定するための比較演算子として、かつて「<>」という記法が存在していました。これは数式における「≠」に相当する演算子で、Python 2.x系で利用できました。同じ動作をする「!=」演算子もありますが、Python 3.xでは「<>」演算子は廃止され、使用するとエラーになる点に注意が必要です。 Python 2.7での使用例 Python 2.7では、「<>」と「!=」のどちらも「等しくない」判定として同じ結果を返します。 >>> a=5 >>> b=7 >>&g

  2. Pythonファイル操作の基本:作成・読み込み・書き込み・削除を徹底解説

    この記事では、Pythonにおけるファイル操作(ファイルハンドリング)の基本について解説します。以下のコード例を通じて、ファイルの作成、読み込み、書き込み、削除といった一連の操作方法を学ぶことができます。 Pythonでファイルを作成する方法 Pythonで新しいファイルを作成するには、open()メソッドを使用します。このメソッドは「ファイル名」と「モード」の2つの引数を受け取ります。モードには x、a、w のいずれかを指定します。 x: 新規ファイルを作成します。同名のファイルが既に存在する場合はエラーが発生します。 a: 既存ファイルへの追記用モードです。ファイルが存在しない場合は新し