事例使用的django版本是1.4.0(最近在使用sae,沒辦法,只好從1.7.1撤了回來)。不過原理大概都是相仿的吧。
django支持多種數據庫管理工具,如mysql, postgresql, sqlite, 和oracle。其中sqlite是內置在python中的,所以如果使用sqlite的話,就不必進行相關配置,盡情地使用python來管理即可,當然也就不用看本博文了。
本博文就以mysql為例,來演示 “本地環境下 (與雲環境對應),django使用mysql的步驟” (首先確定你已經安裝了mysql)
step 1:
修改你的django project目錄下的settings.py 文件至如下所示:
其中,'NAME' 對應的 ‘db_name' 是你事先使用mysql 的命令行提示符創建的數據庫名稱。注意:在django使用數據庫之前,你必須先創建出數據庫,否則會報錯。'USER'對應的'username' 還有 'PASSWORD' 對應的‘passwd' 就是你在mysql中創建的用戶名和密碼。如果你有多個的話,隨便填一個就好。'HOST'和'PORT'默認都可以不填。
題外話: 使用用戶名和密碼登錄mysql的方法:
首先,你需要進入 mysql/bin的目錄下,也可以在.bash_profile中設置環境變量:
PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/Cellar/mysql/5.6.22/bin/
再在prompt輸入 mysql -u username -p, 回車後再輸入 passwd即可
step 2:
然後,在manage.py路徑中使用python manage.py syncdb 試試,結果會提示你錯誤找不到 MySQLdb 這個module, 為什麼呢, 因為 python manage.py syncdb 命令是這樣工作的:
1. 在project目錄的settings.py的INSTALLED_APPS元組中找到可能需要更新的APP。
2. 找到每一個APP目錄中的models.py (關系定義文件),並針對變化在數據庫中進行更新。
說了這麼多,前面那個錯誤 找不到 module MySQLdb 是什麼意思啊 ?
先給個圖,再解釋:
因為在models.py中定義關系使用的是python,而真正在數據庫中操作形成model當然一定要用sql語句,所以必須要有一些功能模塊來把python語句轉化成sql語句。如果你使用sqlite的話,由於sqlite和轉化模塊都已經由python內置了,所以直接使用不會發生錯誤。但是 ”mysql語句的轉化模塊“ 就需要你手動加載了,這些模塊放在 MySQL-python 中。
我是使用pip 安裝的:
安裝了之後,再使用 python manage.py syncdb就OK啦。
我使用的系統是 OS X,下面是 mysql 默認的安裝路徑
/usr/local/Cellar/mysql/5.6.22/
如果你想知道你的數據庫文件是放在哪裡的,你可以查看mysql_config文件中的ldata變量,這個變量的值就是 默認的數據庫文件夾存儲的路徑。 我的系統中,mysql_config的完整路徑是 :
/usr/local/Cellar/mysql/5.6.22/bin/mysql_config