で作る Cocoa アプリ(4)

(3)を実現するために必要な機能は次の通り:

それぞれのソフトの入手先は次の通り:

PyObjChttp://pyobjc.sourceforge.net/

mysql-pythonhttp://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 setup.py build すると,無事モジュールができる
  • インストールは,sudo python setup.py install とする

以上で必要なソフトが揃った.

接続テスト:Python to MySQL

Python から MySQL へ接続できるか,簡単なテストを実施してみる.この実験で,mysql-python が正しくインストールされているか確認できる.
まだ Cocoa は使わない.
次のような Python script ファイルを作成:
file --test_connect.py--


#!/usr/bin/python
import MySQLdb, _mysql, time, datetime

vhost = "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 None

if __name__ == '__main__':
test = connectMySQL()

python test_connect.py とし,Console に,
OK, I can connect MySQL Server
と表示されれば接続成功



Click Here!