Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

データベース(MySQL)の使い方 : Pythonコード編

【スポンサーリンク】

今回は、MySQLデータベースをPythonから操作する方法を紹介します。前回、前々回とMySQLについて説明をしてきましたが、今回で最後となります。

MySQLDBモジュールのインストール

下記のコマンドでpythonからMySQLデータベースを操作するモジュールをインストールします。

sudo apt-get install python-mysqldb

データベースを操作する際の流れは以下の様になります。

①データベースに接続

SQLでデータベースを操作

③データベースの更新をコミットする

④接続をクローズする

それでは、①~④までPythonコードでどのように書くか説明します。

MySQLデータベース接続コマンド

データベース名、ユーザー名、パスワードは環境に合わせて変更してください。

import MySQLdb
connector = MySQLdb.connect(host="localhost", db="testdb", user="root", passwd="password", charset="utf8")
cursor = connector.cursor()

②SQLでの操作

◇データベース読み込み(SELECT文)

※読み込みの場合は下記の③のコミットは必要ありません。

※トランザクション分離レベルを"READ COMMITTED"に変更する必要があります。

cursor.execute("select * from テーブル名")
result = cursor.fetchall()

for row in result:
    print row

 ◇データベース更新(UPDATE文)

cursor.execute("UPDATE テーブル名 SET カラム名=%s WHERE id=%s" ,("test","1"))

③データベース変更後のコミット

cursorではないので、注意してください。

connector.commit()

④データベースの接続クローズ

cursor、connectorをクローズします。

cursor.close()
connector.close()

トランザクション分離レベルについて

SQLを普段使っていない人には聞きなれない内容かと思いますが、データベースのトランザクション分離レベルの設定により、データベースの動作が異なってきます。MySQLでは、デフォルトでREPEATABLE READというレベルに設定されています。

mysql -u root -p ⇒ パスワードを入力してデータベースに接続します。
mysql> show variables like 'tx_isolation'; ⇒ 現在の分離レベルの確認 mysql> set session transaction isolation level READ COMMITTED; ⇒ 分離レベルをREAD COMMITTEDに変更

 

SQL文をマスターする必要がありますが、一度データベースを触ったことがある人であれば、Pythonでもすぐにコードが書けると思います。

最近はデータベースを使う頻度は高いと思いますので、習得しておくと役に立ちます。