MacOS Leopard に DJango インストール
環境:
Mac Leopard 10.5.2
MySQL 5.0.51
mysql アンインストール
参考URL
http://www.designalikie.com/manual/2006/10/mysql_1.html
ターミナルを使用して削除する。 削除するファイル 1.「/usr/local/」以下のmysql関連のフォルダ 2. 「/Library/StartupItems/MYSQL」 <データがあまりなければ> MySQLをアンインストールするには「/usr/local/」以下に入っているMySQLを $ sudo rm -rf /usr/local/mysql ↑「/usr/local/mysql」部分に削除したいファイルのパスを入れる $ sudo rm -rf /Library/StartupItems/MYSQL とやって全て削除する。 <データがある場合> mysql/data」をバックアップしておいて削除して、改めてMySQLをインストールしてからバックアップしておいた「data」を持ってくれば移行ができる
mysql インストール
leopard 10.5.2 でdmg から入れてみたら、MySQLdbとの相性が悪そうだったので」ソースからインストールすることにした。
参考URL
http://hivelogic.com/articles/installing-mysql-on-mac-os-x/
・ダウンロード $ http://dev.mysql.com/downloads/mysql/5.0.html#source ・インストール $ tar xvf mysql-5-1.0.51a.tar $ cd mysql-5-1.0.51a $ CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc \ CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors \ -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql \ --with-extra-charsets=complex --enable-thread-safe-client \ --enable-local-infile --enable-shared $ make $ sudo make install ・初期DB構築 $ cd /usr/local/mysql $ sudo ./bin/mysql_install_db --user=mysql $ sudo chown -R mysql ./var 設定ファイルコピー $ sudo /usr/local/mysql/share/mysql/my-small.cnf /usr/local/mysql/my.cnf vi my.cnf ----- [client] default-character-set=utf8 [mysqld] default-character-set = utf8 skip-character-set-client-handshake character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 -----
・自動起動
以下を"com.mysql.mysqld.plist"としてファイル保存
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>com.mysql.mysqld</string> <key>Program</key> <string>/usr/local/mysql/bin/mysqld_safe</string> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>mysql</string> <key>WorkingDirectory</key> <string>/usr/local/mysql</string> </dict> </plist>
$ sudo mv ~/Desktop/com.mysql.mysqld.plist /Library/LaunchDaemons $ sudo chown root /Library/LaunchDaemons/com.mysql.mysqld.plist $ sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist → このときエラー発生 launchctl: propertyList is NULL launchctl: no plist was returned for: /Library/LaunchDaemons/com.mysql.mysqld.plist launchctl: no plist was returned for: /Library/LaunchDaemons/com.mysql.mysqld.plist nothing found to load 保存したファイルにMacのテキストエディタの余分な情報が付与されていたためだった。 vi で書いて保存しなおしたらOK!! $ mysql -uroot
MySQLdb インストール
1.以下でソースをダウンロード http://sourceforge.net/projects/mysql-python 2.圧縮ファイル展開 tar xvf MySQL-python-1.2.2.tar.gz cd MySQL-python-1.2.2 sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql vi _mysql.c ----- 以下を削除 #ifndef uint #define uint unsigned int #endif ----- sudo python setup.py build sudo python setup.py install
DJangoインストール
1. ダウンロード http://www.djangoproject.com/download/0.96.1/tarball/ 2. インストール tar xvf Django-0.96.1.tar cd Django-0.96.1 sudo python setup.py install
Djangoのプロジェクトをつくってみる
参考URL
http://ymasuda.jp/python/django/docs_0.95/tutorial01.html
プロジェクト作成
django-admin.py startproject mysite ・WEBサーバー起動 cd mysite python manage.py runserver ・動作確認 http://127.0.0.1:8000/
Databaseの設定
mysql -u root -p > create database django_test; > grant all on django_test.* to django@localhost; > quit; vi /RROJECT_ROOT/settings.py ----- データベースへの接続パラメタに合わせましょう: DATABASE_ENGINE -- 'postgresql', 'mysql' または 'sqlite3'のいずれかです.他のデータベースもじきにサポートします. DATABASE_NAME -- データベースの名前です. SQLite を使っている場合にはデータベースファイルのフルパス (絶対パス) にします. DATABASE_USER -- データベースのユーザ名です (SQLite では使いません). DATABASE_PASSWORD -- データベースのパスワードです.(SQLite では使いません). DATABASE_HOST -- データベースのあるホストです.データベースサーバが物理的に同じマシン上にあるのなら空文字列にしておきます.(SQLite では使いません). ----- 初期テーブル作成 python manage.py syncdb
投票アプリケーションの作成
モデルを作成する
参考URLのチュートリアルに記載されている投票(polls)アプリケーションを作成してみる。
Django でデータベース Web アプリケーションを書くための最初のステップは,モデルの定義だそうだ。
※本質的には,データベースのレイアウトと,追加のメタデータの定義らしい。
$ python manage.py startapp polls $ vi polls/models.py
from django.db import models class Poll(models.Model): question = models.CharField(maxlength=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): poll = models.ForeignKey(Poll) choice = models.CharField(maxlength=200) votes = models.IntegerField()
モデルを有効にする
プロジェクトにpollアプリケションの存在を教える
$ vi /PROJECT_ROOT/settings.py ----- : INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'mysite.polls' ) ----- ・実行されるSQL文を確認する 以下のコマンドではまだDBにテーブルは作成されない $ python manage.py sql polls BEGIN; CREATE TABLE "polls_poll" ( "id" serial NOT NULL PRIMARY KEY, "question" varchar(200) NOT NULL, "pub_date" timestamp with time zone NOT NULL ); CREATE TABLE "polls_choice" ( "id" serial NOT NULL PRIMARY KEY, "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"), "choice" varchar(200) NOT NULL, "votes" integer NOT NULL ); COMMIT; ・以下コマンドでDBに、pollアプリのテーブルが初めて作成される $ python manage.py syncdb
後はチュートリアル1をいろいろ触って終了。
はまった箇所
mysqldbインストール
$ python Python 2.5.1 (r251:54863, Jan 17 2008, 19:35:17) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> >>> import MySQLdb Traceback (most recent call last): File "<stdin>", line 1, in <module> File "build/bdist.macosx-10.5-i386/egg/MySQLdb/__init__.py", line 19, in <module> File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 7, in <module> File "build/bdist.macosx-10.5-i386/egg/_mysql.py", line 6, in __bootstrap__ ImportError: dynamic module does not define init function (init_mysql) → 結局、ソースからインストールで解決!