導入
MySQLのインストールは他にたくさん資料があるのでそちらを参照のこと。 Macならbrewコマンドかバイナリダウンロードしてインストール、WindowsならWAMPとかVertrigoServが楽かもしれません。 Linuxなどはパッケージ管理コマンドで簡単に入るはずです。
細かな管理や設定についても、かなりの分量になるのでこちらでは省略します。
簡単なシステム開発だと、MySQLを利用するのはいろいろ面倒で正直割に合わず、SQLiteなどを使った方が楽です。とはいえ、SQLiteだと機能的に不満が出ることも多いのでMySQLが必要となることもあります。要件からどちらが良いかをまず見極めるのが重要です。詳しいデータベースの選び方についてはPython/データベースの選択を参照してください。
MySQLとPythonを接続するためのライブラリのインストールはpipから以下のコマンドでできます。
pip install MySQL-Python
接続してデータを更新する
データベースに接続するには「MySQLdb.connect」を使います。
例えばローカルホストにある「python_test」というデータベースに「myuser」というユーザーでパスワード「mypassword」、文字コードUTF8で接続し、「test」というテーブルにデータを追加するには、以下のようにします。
import MySQLdb connector = MySQLdb.connect(host="localhost",db = "python_test", user="myuser", passwd="mypassword", charset="utf8") cursor = connector.cursor() cursor.execute(u"INSERT INTO test VALUE(1,'This is Test');") connector.commit() cursor.close() connector.close()
とこのようにするとデータが一件追加されます。 「connector.commit()」を忘れてデータが追加されないというミスをやってしまいがちなので、注意してください。
ちなみにUnicode型でなくても大丈夫です。
cursor.execute("INSERT INTO test VALUE(1,'これはテスト');")
でもマルチバイト文字を使うならUnicode型を使っておいた方が安心です。
もしマルチバイト文字を使って
_mysql_exceptions.OperationalError: (1366, "Incorrect string value: '\\xE3\\x81\\x93\\xE3\\x82\\x8C...' for column 'data' at row 1")
というようなエラーが出る場合は、MySQLのテーブル定義がUTF8になっていないので以下のSQLでテーブルのコード設定を変えるとうまくいきます。
ALTER TABLE test convert to CHARACTER SET utf8;
「cursor.execute」の部分は以下のようにパラメータを別に書くことも出来ます。
cursor.execute(u"INSERT INTO TEST VALUE(%s,%s);",(1,u"This is Test"))
一つ目の「%s」は「%d」かと思ったけれどもなぜかエラーになり「%s」だとうまくいきます。公式サイトでも数値を「%s」で受けているので、仕様のようです。
データ中の特殊文字などはエスケープされるので、SQLインジェクションなどを気にしないといけない場合は、こちらの記法がおすすめです。
データを取得する
データを取得するときには以下のようにします。
import MySQLdb connector = MySQLdb.connect(host="localhost",db = "python_test", user="myuser", passwd="mypassword", charset="utf8") cursor = connector.cursor() cursor.execute("SELECT * FROM test;") datas = cursor.fetchall() for row in datas: print row[0],row[1] cursor.close() connector.close()
こちらは特に難しいところはないと思います。
ぺージ情報 | |
---|---|
ぺージ名 : | Python/MySQLから使う基礎 |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |