簡単なはずなのにけっこうハマった。
windows7 pro + traclightning という環境が仇になった。。。
traclightning インスコしてると 環境変数 PATH に TRACPATH が設定されてて、
これによってpython2.6にパスが通ってる。
なので TRACPATH の python周りのパスを外した。
※環境変数触るとき Rapid Environment Editor 使ってる。ちょっと楽。管理者権限で実行しないと値を変更できないよ。
で、python2.5なら
http://sourceforge.net/projects/mysql-python/files/
http://sourceforge.net/projects/mysql-python/files/mysql-python/
http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/
あたりにWindows用のexeがある。
python2.5でもよかったんだけれど、
http://www.codegood.com/archives/129
にpython2.7 Windoes用のexeがあったんで2.7を使うことにした。
ちなみにsetup.py build とか install やると
error: Unable to find vcvarsall.bat
で怒られて
http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat
mingw云々でめんどくさなったので放置。
あとmysql_root ってクライアントツールのパスなん?ってのがよくわからんかったのでさらに放置。
http://techracho.bpsinc.jp/baba/2010_04_01/1286
で、元に戻ると、python2.7インスコしてなかったらexeからYesYesYesしてインスコ。
環境変数の設定で PYTHONHOMEで インストールディレクトリ C:\Python27 を指定しつつ、PATH に
%PYTHONHOME%\
%PYTHONHOME%\Scripts
%PYTHONHOME%\DLLs\
%PYTHONHOME%\Lib
%PYTHONHOME%\Lib\lib-tk
%PYTHONHOME%\Lib\site-packages
を追加。
where python とか python --version でパスやバージョンを確認しとく。
2.7が実行されてればOK。
なってなかったらコマンドプロンプト一回落とすとかOS再起動とかして環境変数ちゃんと設定されていたらパスも変わる。
んで、easy_install 使って楽したいので python ez_setup.py を実行してインスコ。
これでpython2.7環境できたので、
http://www.codegood.com/archives/129
から落としてきたexe実行してYesマンする。
import sys
print sys.path とかでpython2.7のsite-packagesにパス通ってるかみとくといいかも。
ImportError: No module named MySQLdb
とかなっちゃからね。
したらば、次のコードでselectしてみる。
http://taichino.com/programming/1259
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
print sys.path
import MySQLdb
from MySQLdb.cursors import DictCursor
def process_row(row):
print row
con = MySQLdb.connect(host='192.168.X.X', db='XXX', user='XXX', passwd='XXX', charset="utf8")
# SELECT
cur = con.cursor() # connectionから取得したcursorからsqlを発行する
print cur.execute('SELECT * FROM ur.diaries') # executeは行数を返却
res = cur.fetchall() # fetchone, fetchmany, fetchallで結果取得
for row in res:
process_row(row) # 各行はtuple (10L, 'Book A', 1000L, None)
文字コード的なところが…。
ちゃんと文字コード指定したらいけるみたい。
文字コード指定してなかったらselectの結果、日本語文字列が??????になってたけど
ちゃんと指定したらユニコード文字になってた。
updateとかinsertもきっといけるだろう。
もうおなかいっぱい。
0 件のコメント:
コメントを投稿