Ad
1: 2016-12-13 (火) 13:44:19 njf ソース バックアップ No.1 を復元して編集 2: 2016-12-13 (火) 15:05:06 njf ソース バックアップ No.2 を復元して編集
Line 5: Line 5:
Linuxなどはパッケージ管理コマンドで簡単に入るはずです。 Linuxなどはパッケージ管理コマンドで簡単に入るはずです。
-インストールはpipからできます+細かな管理や設定についても、かなりの分量になるのでこちらでは省略します。 
 + 
 +MySQLとPythonを接続するためのライブラリのインストールはpipから以下のコマンドでできます。
 pip install MySQL-Python  pip install MySQL-Python
 +
 +*接続してデータを更新する [#k85dd1a0]
 +
 +データベースに接続するには「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インジェクションなどを気にしないといけない場合は、こちらの記法がおすすめです。
 +
 +*データを取得する [#l53f6cef]
 +
 +データを取得するときには以下のようにします。
 +
 + 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()
 +
 +こちらは特に難しいところはないと思います。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2103, today: 2, yesterday: 0
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF