高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

Django Shell

有互動才是王道!!

學過Python的朋友應該都知道,Python有個很方便的互動shell,可以讓你在互動的指令模式底下,試驗一下程式碼是不是可以正確執行,是個相當方便的工具。在Django也提供了類似的工具,只要輸入python manage.py shell,就會進入shell模式,而且還有把該專案的一些設定也一起加進來,也就是說你可以在shell裡面直接就可以操作資料庫。

接著來看看怎麼樣在shell裡面新增/修改/刪除資料:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
> python manage.py shell
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from author.models import Profile
>>> Profile.objects.all()
[]
>>>
>>> eddie = Profile(name = "eddie kao", age = 30, tel = "0928123123", address = "Taipei, Taiwan", email = "eddie@digik.com.tw")
>>> eddie.save()
>>>
>>> Profile.objects.all()
[<Profile: Profile object>]
>>>
>>> eddie.id
1
>>>
>>> eddie.name
'eddie kao'
>>> someone = Profile.objects.get(id = 1)
>>> someone.email
u'eddie@digik.com.tw'
>>>
>>> someone.email = 'eddie@anotheremail.com'
>>> someone.save()
>>>
>>> someone.delete()

從上面的程式碼可以看到,我們都是透過Profile類別來做操作,例如我們在第10行建立了一個Profile類別的實體eddie,並在建立的時候傳入了一些參數(其實這些參數就是每個欄位的對應名稱),接著我們在第11行執行eddie.save(),這樣就新增了一筆資料到profile的資料表裡了;第21行,透過get方法取得一個id = 1的物件出來,第25行設定新值之後,第26行一樣執行someone.save()進行資料的更新;如果你要刪除該筆資料,在第28行執行delete(),該筆資料就會被刪除。

透過類別跟物件的操作,讓你可以不用寫SQL語法也能操作資料庫。

要提醒大家,不用寫SQL語法不代表你可以不用懂SQL語法,事實上像這樣的ORM(Object-Relational Mapping)只是讓你用比較抽象的方式來操作資料,但如果你不知道實際上它到底幫你做了什麼事,當你要組合比較複雜的查詢的時候就會踢到鐵板了。

Comments