Python

Python初心者向け:データベースからデータを抽出する基本を解説

スポンサーリンク


SQLiteを使う準備をまとめた投稿もあります。合わせてお読みください。

はじめに

前回は、PythonからMySQLに接続をして、データを追加してみました。今回は、条件を指定してデータを抽出する方法をみてみましょう。データの抽出は、select文でしたね。PythonからはどのようにSQL文を実行するのかを実際に確認してみましょう。

データを抽出する場合も前回と同様にMySQLとの接続からです。作業の流れは次のようになります。

  • MySQLとの接続
  • カーソル作成
  • カーソルからSQL発行
  • カーソルからデータ読み込み

事前準備

PythonからMySQLに接続してカーソルを作成するところまでは、前回と同じなので、コードだけ記述しておきます。以下のコードを打ち込めばカーソルの作成までは完了です。

# ライブラリのインポート
import MySQLdb
# データベースとの接続
conn=MySQLdb.connect(host='localhost',user='root',passwd='',db='testdb',charset='utf8')
# カーソルを作る
cursor=conn.cursor()

これで準備ができました。あとは、データを抽出するためのSQL文を作っていくだけです。

データを抽出する

では、さっそくデータを抽出するためのSQL文をつくっていきましょう。前回と同じように「sql」という変数にSQL文を格納することにしましょう。前回のtestdbというデータベースの、testtableというテーブルからデータを抽出してみます。ここではお名前が「石井」となるデータを抽出してみましょう。

# SQL文を作る
sql="select * from testtable where name='%s'"%('石井')
sql

念のため作成したSQL文をみてみると、上記のようにちゃんとできてますね。あとは、前回と同様にこのSQL文を発行します。次のようにします。

cursor.execute(sql)

この数字は、処理した行数のことでしたね。今回のSQL文はselect文なので、データの抽出結果が返っています。これを取り出す必要があります。cursorにはSQL文を発行した後に、SQL文を実行した結果が格納されています。これを取り出すにはfetchall()というメソッドを使って次のようにします。

result=cursor.fetchall()
result

このように、結果がタプルのタプルとして返ってきています。※今回は1レコードのみですが、複数のレコードが条件に合致した場合は、1レコードが1タプルとなって、タプルのタプルの形で返ってきます。

これも実際に試してみましょう。

sql="select * from testtable"
cursor.execute(sql)
result=cursor.fetchall()
result

これを1つずつ取り出すことでデータを扱うことができます。たとえば、お名前だけを取り出すのであれば、次のようにすることができます。

for item in result:
    print(item[0])
スポンサーリンク

まとめ

いかがでしょうか?今回はPythonからデータベースを操作してデータを抽出する方法を学びました。データベースよくわかんない、って思ってましたけど、この辺の基本的な内容を整理すると、少しは理解が進むかもしれませんね。頑張ろう。次回は、Pythonからcsvファイルをデータベースに登録する操作を学びます。

コメント

タイトルとURLをコピーしました