一喪:我也不想墮落 可我沒有快樂
orm對映
什麼是orm對映?在筆者認為就是對sql語句的封裝,所寫語句與sql對應語句含義相同,使開發更加簡單方便,不過也是存在弊端的,使程式執行效率下降。例如:
(id=2)等於
select * from
user_userinfo where
id=2
修改管理器(models.py)
匯入新的包:from django.db import models
進行模糊查詢
開始進行查詢前我們先來認識filter()方法。
這是乙個過濾器方法用於過濾掉不符合條件的元素。
值得一提的是其內自帶方法函式的引用方式為『__方法名稱』。
__exact 精確等於 like 『aaa』
__iexact 精確等於 忽略大小寫 ilike 『aaa』
__contains 包含 like 『%aaa%』
__icontains 包含 忽略大小寫 ilike 『%aaa%』,但是對於sqlite來說,contains的作用效果等同於icontains。
__gt 大於
__gte 大於等於
__lt 小於
__lte 小於等於
__in 存在於乙個list範圍內
__startswith 以…開頭
__istartswith 以…開頭 忽略大小寫
__endswith 以…結尾
__iendswith 以…結尾,忽略大小寫
__range 在…範圍內
__year 日期欄位的年份
__month 日期欄位的月份
__day 日期欄位的日
__isnull=true/false
舉幾個例子:
obj1 = userinfo.objects
.filter
(user_name__contains='王'
)#以『王』開頭的user__name
obj2 = userinfo.objects
.filter
(user_name__endswith='王'
)#以『王』結尾的user__name
obj3 = userinfo.objects
.filter
(id__gte=5
)#id大於等於5的
obj5 = userinfo.objects
.filter
(id__exact=5
)#id等於5的
obj6 = userinfo.objects
.filter
(id__in=[1
,3,5
])#id等於1,3,5,的
exclude方法,排除選項。
obj8 = userinfo.objects.filter
(password='123456'
,id__gt=2
).exclude(phone=188
)#找到符合filter的內容後排除phone等於188的,它的另一種寫法為
from
django.db.models import q
obj = userinfo.objects.filter
(q(password='123456'
) & q(id__gt=2
) & ~q(phone=188
))
計算和和最大值:
from django.
db.models import
sum,max
,min
obj =
userinfo.
objects.
aggregate(sum
('id'
))obj =
userinfo.
objects.
aggregate(max
('id'
))obj =
userinfo.
objects.
aggregate(min
('id'
))
統計個數
print(userinfo.objects
.count
())#注:print只可於終端檢視
範圍查詢
obj = userinfo.objects
.all
()[1
:3]#左開右閉,只查詢了1和2
去重複
obj = person.useraddress
_set.all
()
而get方法與filter的最大區別為,get只能返回乙個資料,filter可以返回多個,在get查詢到兩個以上資料時就會報錯。
obj4 = userinfo.objects.get
(id=5
) city = useraddress.objects.get
(detail='北京望京'
)
Django之ORM資料對映
資料對映在django中的應用 1 一對一關係 models.onetoonefield 相當於唯 一 外來鍵 2 一對多關係 models.foreignkey 3 多對多關係 models.manytomanyfield 相當於關聯表中建立兩個唯一外來鍵關聯 比如有書 描述表 出版社 作者這4張...
django之ORM物件關係對映
orm 物件關係對映,物件關係對映的意思就是在python中 類對應資料庫中的 物件對應 中的記錄。屬性對應 中的字段。orm通過讓我們程式設計師使用物件導向的思想來運算元據庫,不用直接再編寫sql語句。提高開發效率。資料建模 簡單地說就是使用資料庫來描述我們的業務邏輯。teacher表 name ...
Django中的ORM(物件關係對映)
django與資料庫的命令互動主要是通過manage.py,常用的命令就是manage.py syncdb,可以將model中不在資料庫中存在的表給建立完成,但是只能建立新的資料表或者列,如果model中將某個已經建立的資料表刪除,syncdb是不會進行同步刪除的操作的。為什麼要使用orm orm是...