メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2011年3月17日木曜日

[Python][django] チュートリアルメモ3(debian lenny)

モデルを有効にする



$ cd boyoyon
$ vi settings.py
 

ってやってsettings.pyを編集。

INSTALLED_APPSって書いてあるところにモデルを追加。

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
)
 

ってなってるんで、そこにboyoyon.apppppを追加。

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'boyoyon.appppp',
)
 

これで有効になったかしら。
ということで以下のコマンドを実行。

$ python manage.py sql appppp
 

すると、、、

Error: Django doesn't know which syntax to use for your SQL statements,
because you haven't specified the DATABASE_ENGINE setting.
Edit your settings file and change DATABASE_ENGINE to something like 'postgresql' or 'mysql'.
 

って言われた。
DATABASEの設定しないとダメみたい。

早速DBの設定。
settings.pyをひらいて、、、

DATABASE_ENGINE = '' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = '' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
 

ってところを環境に合わせて設定。

自分の環境は以下の感じ。

DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'test' # Or path to database file if using sqlite3.
DATABASE_USER = 'root' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = 'localhost' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '3306' # Set to empty string for default. Not used with sqlite3.
 

特にmysqlが好きなわけじゃないけどmysqlを指定。
databaseは'test'、ユーザはroot、パスワードなし。

んで、再度sql出力コマンド。

$ python manage.py sql appppp
BEGIN;
CREATE TABLE `appppp_poll` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`question` varchar(200) NOT NULL,
`pub_date` datetime NOT NULL
)
;
CREATE TABLE `appppp_choice` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`poll_id` integer NOT NULL,
`choice` varchar(200) NOT NULL,
`votes` integer NOT NULL
)
;
ALTER TABLE `appppp_choice` ADD CONSTRAINT poll_id_refs_id_9963a93 FOREIGN KEY (`poll_id`) REFERENCES `appppp_poll` (`id`);
COMMIT;
 

おお、SQL文が出力された。。。
idはauto_increment。これ変えたい場合は
なんたらFieldのパラメータにprimary_key=Trueを指定すればいいらしい。

さて、次は実際にDBにテーブルを作る。
syncdbというコマンドを叩くらしい。

$ python manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table appppp_poll
Creating table appppp_choice

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'konno'):
E-mail address: atkonn@gmail.com
Password:
Password (again):
Error: Blank passwords aren't allowed.
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model
Installing index for appppp.Choice model
 

途中パスワードで怒られた。空パスワードはダメみたい。

どれ、テーブルできたかな。

$ mysql -uroot test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 231
Server version: 5.0.51a-24+lenny4 (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

> show tables;
+----------------------------+
| Tables_in_test |
+----------------------------+
| appppp_choice |
| appppp_poll |
| auth_group |
| auth_group_permissions |
| auth_message |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_content_type |
| django_session |
| django_site |
+----------------------------+
 

っと。
もりっとできた。


次はデータベースAPIと戯れるとのこと。

.

0 コメント: