今回は、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でもすぐにコードが書けると思います。
最近はデータベースを使う頻度は高いと思いますので、習得しておくと役に立ちます。