以前寫過一篇django的模型關係,今天騰出時間把上篇的兄弟篇補上,來學習下django orm, 利用django的模型能夠很方便的對數據庫進行操做,以前開發人員是必需要具有必定sql基礎的,但若是有些開發人員就是不想了解sql呢,在以前,不懂那是萬萬不行的,但自從有了orm,開發人員就能夠在不懂sql的狀況下也能完成對數據庫的增刪改查操做,今天咱們就來看看如何實現這些基本的需求,開始前咱們先定義一個模型,在models.py文件裏寫入:sql
class Info(models.Model):數據庫
name = models.CharField(max_length=100)django
age = models.IntegerField(default=0)app
email = models.EmailField()ide
有了這個模型,咱們就來看最基本的對數據操做實現方法,學習
一、查:spa
首先若是要獲取全部信息,能夠用all,代碼以下:orm
all_per=Info.objects.all() #至關於select * from Info對象
若是要獲取單個對象可用:ci
Info.objects.get(name=’john’)
如何要過濾返回的信息,例如要查詢名字是john的,能夠用filter:
Info.objects.filter(name=’john’) #至關於select * from Info where name=’jhon’
條件組合查詢也是支持的,例如項目等於john,郵件是john@gmail.com的
Info.objects.filter(name=’john’, mail=’john@gamil.com’)
模糊查詢,雖然這個不到萬不得已不用,有時候仍是有可能用到的,例如查詢名字裏包含john的,
INfo.objects.filter(name__contains=’john’) #至關於select * from Info where name LIKE ‘%john%’
固然若是你查詢的某些數據不想要,能夠用exclude,例如查詢全部名字是john的,但email不是test@gmail.com的:
Info.objects.filter(name=’john’).exclude(email=’test@gmail.com’)
最後查完的數據若是想排個序,好比按年齡,能夠這樣:
Info.objects.all().order_by(‘age’),若是反向查下能夠在age前面加一個-(減號)便可。
若是隻想看前10我的呢,能夠用切片,很是靈活,以下:
Info.objects.all().order_by(‘age’)[:10]
以上就是比較經常使用的查詢對數據的操做了,基本知足咱們對數據查詢的需求,接下來咱們說增長。
二、增
若是要添加一個用戶,只須要獲取用戶的信息,通常是來自前臺表單,實例化模型,而後調用save保存便可,例如:
person = Info(name=’john’,age=20, email=’john@gmail.com’)
person.save()
這二步就完成了數據的保存。
三、改
若是數據庫中某我的郵箱寫錯了,能夠先查出來,而後作更新:
p = Info.objects.get(name=’john’)
p.email=’test@gmail.com’
p.save()
這樣就修改了這條記錄,若是想對多條進行修改能夠本身加條件過濾後修改,例如把全部條目的email所有修改爲abc@gmail.com,固然這個例子有點扯,只是爲說明用法:
Info.object.all().update(email=’abc@gmail.com’)
四、刪除
最後咱們說刪除,用模型來操做很是簡單,基本步驟是先查出你要刪的對象,而後執行delete()便可,例如要刪除名字是john的記錄,能夠這樣:
p = Info.objects.filter(name=’john’)
p.delete()
這樣就刪除了,固然這是對1條記錄的操做,刪除整個表的方法我就不寫了,有興趣本身去查查吧
這篇就到這裏,我我的感覺是用orm來操做數據庫仍是很是方便的,整個代碼中也沒必要寫任何的sql語句,固然這種orm也並不能覆蓋全部的操做,有的地方仍是不得不寫sql來完成,因此django也支持原生的sql語句,感興趣的能夠去看下官方文檔。