Django專案中的ORM對映與模糊查詢

2021-08-27 20:37:21 字數 2773 閱讀 6873

一喪:我也不想墮落 可我沒有快樂

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是...