資料庫是一所大莊園,藏著各種寶貝。乙個沒有資料庫的**,所能提供的功能會非常有限。
為了找到心愛的人,姜戈決定一探這神秘的糖果莊園。
連線資料庫
django為多種資料庫後台提供了統一的呼叫api。根據需求不同,django可以選擇不同的資料庫後台。mysql算是最常用的資料庫。我們這裡將django和mysql連線。
在linux終端下啟動mysql:
$mysql -u root -p
在mysql中創立django專案的資料庫:
mysql> create database villa default charset=utf8;
這裡使用utf8作為預設字符集,以便支援中文。
在mysql中為django專案創立使用者,並授予相關許可權:
mysql> grant select, insert, update, delete, create, drop, index, alter, create temporary tables, lock tables on villa.* to 'vamei'@'localhost' identified by 'vameiisgood';
在settings.py中,將databases物件更改為:
databases = {
'default': {
'engine': 'django.db.backends.mysql',
'name': 'villa',
'user': 'vamei',
'password': 'vameiisgood',
'host':'localhost',
'port':'3306',
後台型別為mysql。上面包含資料庫名稱和使用者的資訊,它們與mysql中對應資料庫和使用者的設定相同。django根據這一設定,與mysql中相應的資料庫和使用者連線起來。此後,django就可以在資料庫中讀寫了。
姜戈略一遲疑,旋即走入了莊園的大門。
創立模型
mysql是關係型資料庫。但在django的幫助下,我們不用直接編寫sql語句。django將關係型的表(table)轉換成為乙個類(class)。而每個記錄(record)是該類下的乙個物件(object)。我們可以使用基於物件的方法,來操縱關係型的mysql資料庫。
在傳統的mysql中,資料模型是表。在django下,乙個表為乙個類。表的每一列是該類的乙個屬性。在models.py中,我們建立乙個只有一列的表,即只有乙個屬性的類:
from django.db import models
class character(models.model):
name = models.charfield(max_length=200)
def __unicode__(self):
return self.name
類character定義了資料模型,它需要繼承自models.model。在mysql中,這個類實際上是乙個表。表只有一列,為name。可以看到,name屬性是字元型別,最大長度為200。
類character有乙個__unicode__()方法,用來說明物件的字元表達方式。如果是python 3,定義__str__()方法,實現相同的功能。
命令django同步資料庫。django根據models.py中描述的資料模型,在mysql中真正的建立各個關係表:
$python manage.py syncdb
被解放的姜戈01 初試天涯
向昆汀的致敬,被解放的姜戈 django意外的和昆汀的電影重名。這大大提高了django的知名度。另外利用電影,宣傳了這個奇怪的詞的發音。下面是姜戈的初體驗。啟動計算機中的python,嘗試載入django模組。如果可以成功載入,那麼說明django已經安裝好 import django print...
被解放的姜戈01 初試天涯
本系類教程基本 部分原創以下原創作者 向昆汀的致敬,被解放的姜戈 django意外的和昆汀的電影重名。這大大提高了django的知名度。另外利用電影,宣傳了這個奇怪的詞的發音。下面是姜戈的初體驗。博主採用了pycharm5.0.3 專業版 配合python3.4.3 django1.9.5 進行開發...
被解放的姜戈08 遠走高飛
之前在單機上實現了乙個django伺服器 被解放的姜戈07 馬不停蹄 現在我們可以把這個伺服器推上乙個雲平台。這裡我選擇使用阿里雲。看著復仇的火焰燃燒,姜戈露出得意的笑容。在阿里雲官網 aliyun.com 頁面註冊阿里雲賬號。登入後選擇雲伺服器ecs,並選擇 建立例項 選擇作業系統ubuntu 1...