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インジェクション対策として、実運用では文字列フォーマットではなく、パラメータ化されたクエリ(プレースホルダ)を使用することが安全です。
-
Pythonの「<>」演算子とは?Python 2とPython 3での違いを解説
Pythonには、2つの値が「等しくない」ことを判定するための比較演算子として、かつて「<>」という記法が存在していました。これは数式における「≠」に相当する演算子で、Python 2.x系で利用できました。同じ動作をする「!=」演算子もありますが、Python 3.xでは「<>」演算子は廃止され、使用するとエラーになる点に注意が必要です。 Python 2.7での使用例 Python 2.7では、「<>」と「!=」のどちらも「等しくない」判定として同じ結果を返します。 >>> a=5 >>> b=7 >>&g
-
Pythonファイル操作の基本:作成・読み込み・書き込み・削除を徹底解説
この記事では、Pythonにおけるファイル操作(ファイルハンドリング)の基本について解説します。以下のコード例を通じて、ファイルの作成、読み込み、書き込み、削除といった一連の操作方法を学ぶことができます。 Pythonでファイルを作成する方法 Pythonで新しいファイルを作成するには、open()メソッドを使用します。このメソッドは「ファイル名」と「モード」の2つの引数を受け取ります。モードには x、a、w のいずれかを指定します。 x: 新規ファイルを作成します。同名のファイルが既に存在する場合はエラーが発生します。 a: 既存ファイルへの追記用モードです。ファイルが存在しない場合は新し