で作る Cocoa アプリ(4)
(3)を実現するために必要な機能は次の通り:
それぞれのソフトの入手先は次の通り:
PyObjC: http://pyobjc.sourceforge.net/
mysql-python: http://sourceforge.net/projects/mysql-python
インストール:PyObjC
- Download のリンクから,「PyObjC 1.2 installer package for Apple's Python (MacOS X 10.3)」をクリックし,必要なソフトをダウンロード,と思ったら,リンクをクリックしてもダウンロードされない.なんで? 気を取り直して「Files section of our SourceForge project.」をクリックし,「pyobjc-1.2-python2.3-macosx10.3.dmg」をダウンロードする
- pyobjc-1.2.mpkg をダブルクリックするとインストーラが起動するので,指示に従う
以上で,PyObjC のインストールは完了.
インストール:mysql-python
- MySQL-python-1.0.0.tar.gz をダウンロードする
- ファイルを解凍し Console で次の通り:python ./setup.py build
- error が出まくり,build 失敗.error が発生する原因は,MySQL 用のヘッダーファイルが無いため.もし,既に MySQL がインストールされている環境であれば,一発で build できるはず.無い物は用意すればよい,ということで,やや遠回りながら,MySQL のソースをダウンロードし,必要なファイルを揃えることにする
- setup.py を実行時に出力される error を見ると,
_mysql.c:41:19: mysql.h: No such file or directory
_mysql.c:42:26: mysqld_error.h: No such file or directory
_mysql.c:43:20: errmsg.h: No such file or directory
...
とあるので,とりあえず,これらのファイルを用意する.
- MySQL は次からダウンロードできる:http://dev.mysql.com/downloads/
- 現時点の最新版 ver. 4.1.8 Standard (Without installer),MacOS X 用 tar.gz をダウンロードする
- ver. 4.1.8 Standard (Without installer) のファイルから.ファイルを解凍すると,include の中に,必要なファイルが揃っている.列挙すると,
- setup.py を確認してみると,75 行目付近に OS ごとに path が指定されている部分がある.ここを,先ほどダウンロードした MySQL のソース中の lib ディレクトリに変更すればよい.具体的には,
#include_dirs.append('/sw/include/mysql')
#library_dirs.append('/sw/lib/mysql')
include_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
library_dirs.append('/Users/who/Desktop/mysql-standard-4.1.8-apple-darwin7.6.0-powerpc/lib')
のような感じ
以上で必要なソフトが揃った.
接続テスト:Python to MySQL
Python から MySQL へ接続できるか,簡単なテストを実施してみる.この実験で,mysql-python が正しくインストールされているか確認できる.
まだ Cocoa は使わない.
次のような Python script ファイルを作成:
file --test_connect.py--
python test_connect.py とし,Console に,
#!/usr/bin/python
import MySQLdb, _mysql, time, datetimevhost = "192.168.1.1" # MySQL のホストを指定
vuser = "who" # 接続ユーザ名
vpass = "pass" # パスワード
vdatabase = "testdb" # MySQL に作ったデータベース名def connectMySQL():
host_name = vhost
user_name = vuser
password = vpass
database_name = vdatabase
mesg = "Your input information as below:?n"
mesg = mesg + "?t Host = %s?n" % (host_name)
mesg = mesg + "?t User = %s?n" % (user_name)
mesg = mesg + "?t Pass = %s?n" % (password)
mesg = mesg + "?t database = %s?n" % (database_name)try:
db = MySQLdb.connect(host = host_name,
user = user_name,
passwd = password,
db = database_name,
connect_timeout = 1440 * 60)mesg = mesg + "OK, I can connect MySQL Server"
print mesg
return db
except:
mesg = "I can't connect"
print mesg
return Noneif __name__ == '__main__':
test = connectMySQL()
OK, I can connect MySQL Server
と表示されれば接続成功