上一堂我們成功migrate model到我們的程式,如果有跟到的話XD
今天要跟大家講的是資料庫在Django裡的操作
在這之前小補充個
可以用來儲存電子檔案,想像成一個倉庫,裡面分成很多類的寶盒(Table),寶盒裡面有有序(Column)的排列。
User建立完DB後,可以對其中的Data執行四個主要動作,分別是Create (新增)、Read (讀取)、Update (修改)、Delete (刪除),常簡稱為 CRUD
知道DB後,要實際對他操作囉
待會我們需要藉由Django的Shell來操作,在這之前我們先安裝IPython,可以說是強化版的 Python cmd,pip 是 Python 程式語言的套件管理程式,我們用他來安裝 ipython
pip install ipython
安裝成功看見 Successfully installed 的資訊就可以來測試 Run 看看
python manage.py shell
成功啟動後可以看到不一樣的介面,如下圖
成功後,我們先將等等要操作的model Teacher import 進來
from classes.models import Teacher
如果import成功,這時候什麼都不會回報,就可以繼續輸入 In[2]
那我們就先來Create(新建)一個物件,物件命為David,今年17歲,他的專長技能是Django
Teacher.objects.create(name='David',yrsold='17',skills='django')
成功建立後,我們對資料庫Read,檢查是否成功
Teacher.objects.all()
呼叫所有物件,沒意外的話會顯示
<QuerySet [<Teacher: Teacher object>]>
那從所有物件呢,我們要呼叫第一個(因為現在只有存我們剛剛建的)
這邊的index就很直覺的跟我們平常操作array一樣
Teacher.objects.all()[0]
out會是
<Teacher: Teacher object>
那我們成功抓到這個物件後,檢查他的name
Teacher.objects.all()[0].name
這邊看到成功回報 David 就是 Create 成功囉 !
以上三步附圖:
對的,總不可能說請你們記住每個Object的index,所以呢,這邊有幾個小撇步
如果我們要找的資料是我,name為David,可以很直覺的
Teacher.objects.get(name='David')
這時候就會回報那個Object給你,那看你要的是 name, yrsold, skills 就是一樣再後面用object呼叫的方式呼叫
下一個呢,我個人認為麻煩一些,filter中文為過濾,濾出你想要的資料
Teacher.objects.filter(name='David')
但這邊要注意的是,回報的資料型態跟Get不一樣
<QuerySet [<Teacher: Teacher object>]>
怎麼又是QuerySet(List的概念),那我們剛剛已經知道怎麼處理了
Teacher.objects.filter(name='David')[0].skills
就可以 print 出 David 的技能囉 !
好像篇幅有點長了,那下一篇再跟大家如何Update資料和Delete