Django環境下ORM操作必知必會13條

2021-09-26 04:38:53 字數 2820 閱讀 2068

1.models.py檔案內容:
from django.db import models

class person(models.model):

id = models.autofield(primary_key=true)

name = models.charfield(max_length=32, verbose_name='姓名')

age = models.integerfield(null=true, blank=true, verbose_name='年齡')

birth = models.datetimefield(auto_now=true, verbose_name='生日')

*** = models.charfield(max_length=32, choices=(('1', '男'), ('2', '女')), verbose_name='性別')

def __str__(self):

return '< person %s-%s >' % (self.name, self.id)

class meta:

# ordering = 'id' # 按照id排序

db_table = "person"

verbose_name = "個人資訊"

verbose_name_plural = "所有使用者資訊"

2.在專案根目錄下新建乙個orm目錄,然後建立乙個orm.py檔案,內容如下:
import os

# 如果忘記main是怎麼寫的,可以複製manage.py檔案的開頭,然後再匯入django

if __name__ == '__main__':

os.environ.setdefault("django_settings_module", "orm_about.settings")

import django

django.setup()

# 1 查詢所有物件,返回乙個物件集合

persons = models.person.objects.all()

print(persons)

# 2 get 查詢已經存在的物件,沒有則報錯

ret = models.person.objects.get(id=1)

print(ret)

# 3 filter 查詢所有滿足條件的物件,沒有則返回乙個空集合。

ret = models.person.objects.filter(***=1)

print(ret)

# 4 exclude 查詢所有不滿足此條件的物件,返回乙個物件集合

ret = models.person.objects.exclude(id=3)

print(ret)

# 5 values 取具體的資料,物件列表,裡面的元素是字典,字段:值

# 沒有指定引數 獲取所有字段資料

# 指定引數 獲取指定欄位的資料

ret = models.person.objects.all().values('id', 'name')

for i in ret:

print(i, type(i))

# 6 values_list 取具體的資料,物件列表,裡面的元素是元組,欄位的值

# 沒有指定引數 獲取所有欄位的值(不包含欄位名,純取值)

# 指定引數 獲取指定欄位的值(不包含欄位名,純取值)

ret = models.person.objects.all().values_list('name', 'id')

for i in ret:

print(i, type(i))

# 7 order_by 排序,按照給出的字段排序,如果出現第乙個欄位的值相同的情況,按照第二個字段再次排序;

# 欄位前'-'表示降序

ret = models.person.objects.all().order_by('age', '-id')

print(ret)

# 8 reverse 對排序結果進行反轉

ret = models.person.objects.all().order_by('id').reverse()

print(ret)

# 9 distinct 去重 針對的是每一條資料物件是否重複

# ret = models.person.objects.all().order_by('id').distinct()

# 10 count 計數

ret = models.person.objects.all().count()

print(ret)

# 11 first 取第乙個物件,取出來的物件如果不存在,顯示none

# ret = models.person.objects.filter(id=100).first() # none

# 12 last 取最後乙個物件,取出來的物件如果不存在,顯示none

ret = models.person.objects.all().first()

ret1 = models.person.objects.all().last()

print(ret)

print(ret1)

# 13 exists 判斷物件是否存在,返回true或false

ret = models.person.objects.all().exists()

ret1 = models.person.objects.filter(id=100).exists()

print(ret)

print(ret1)

django環境下ORM操作之單錶查詢雙下劃線

import os 如果忘記main是怎麼寫的,可以複製manage.py檔案的開頭,然後再匯入django if name main os.environ.setdefault django settings module orm about.settings import django djan...

django之ORM查詢操作(二)

過濾器 基於所給的引數限制查詢的結果 count 返回當前查詢的總條數 aggregate 聚合 exists 判斷查詢集中是否有資料,如果有則返回true,沒有則返回false 2.快取 查詢集的結果被存下來之後,再次查詢相同資料時會使用之前快取的資料 user列表資訊檢視 def userlis...

Django資料庫ORM操作

簡單的說,orm是通過使用描述物件和資料庫之間對映的元資料,將程式中的物件自動持久化到關聯式資料庫中。orm在業務邏輯層和資料庫層之間充當了橋梁的作用。讓我們從o r開始。字母o起源於 物件 object 而r則來自於 關係 relational 幾乎所有的軟體開發過程中都會涉及到物件和關聯式資料庫...