在Django之ORM模型中總結過django下mysql表的建立操做,接下來總結mysql表記錄操做,包括表記錄的增、刪、改、查。html
class UserInfo(models.Model): user = models.CharField(max_length=16) pwd = models.CharField(max_length=32)
對於表單的添加有三種方式:mysql
#方法1 obj= models.UserInfo(user="zhangsan",pwd="888888") obj.save() #方法二: dic = {"user":"zhangsan", "pwd":"888888"} modles.UserInfo.objects.create(**dic) # 方式三: models.Student.objects.create(user="shangsan", pwd="888888")
models.UserInfo.objects.filters(user="zhangsan").delete()sql
models.UserInfo.objects.filter(user="password").update(pwd="666666")django
或post
obj = models.UserInfo.objects.get(user="zhangsan")ui
obj.pwd= "666666"spa
obj.savecode
注意這使用的是get(),get()若是找不到就會報錯,若是有多個值也會報錯,只能拿一個值htm
(1)all()對象
models.UserInfo.objects.all() // 得到全部
>>>> <QuerySet [<UserInfo: UserInfo object (1)>]>
(2)filter()
能夠實現且關係,可是或關係須要藉助Q查詢實現,查不到的時候不會報錯
models.UserInfo.objects.filter(user="zhangsan")
models.UserInfo.objects.filter(user="zhangsan",pwd="888888")
print(models.UserInfo.objects.filter(user="zhangsan").values()) >>>> <QuerySet [{'id': 2, 'user': 'zhangsan', 'pwd': '888888'}]>
print(models.UserInfo.objects.filter(user="zhangsan").values()[0]["pwd"]) >>>> 888888
(3)get()
若是找不到會報錯,若是有多個值也會報錯,只能得到有一個值的
models.UserInfo.objects.get(user="zhangsan")
models.UserInfo.objects.get(user="zhangsan",pwd="888888")
print(models.UserInfo.objects.get(user="zhangsan")) UserInfo object (2)
(4)exclude()
排除條件,查看除了()的其餘信息
(5)values()
返回QuerySet對象,把對象轉換爲字典的形式
print(models.UserInfo.objects.filter(user="zhangsan").values("user")) >>>> <QuerySet [{'user': 'zhangsan'}]> print(models.UserInfo.objects.filter(user="zhangsan").values("user", "pwd")) <QuerySet [{'user': 'zhangsan', 'pwd': '888888'}]>
(6)values_list()
返回QuerySet對象,把對象轉換爲元祖的形式
print(models.UserInfo.objects.filter(user="zhangsan").values_list()) >>>> <QuerySet [(2, 'zhangsan', '888888')]>
(7)order_by()
排序
models.UserInfo.objects.all().order_by("user")
(8)reverse()
反序
models.UserInfo.objects.all().reverse()
(9)distinct()
去重
models.UserInfo.objects.filter(user="zhangsan").values("user").distinct()
(10)count()
數量
(11)first()
(12)last()
(13)exists()
查看有沒有記錄,若是有就返回True,沒有則返回False,並不須要判斷全部的數據
看下面的例子後應該就很清除了
models.Tb1.objects.filter(id__lt=10, id__gt=1) # 獲取id小於1 且 大於10的值 models.Tb1.objects.filter(id__in=[11, 22, 33]) # 獲取id等於十一、22、33的數據 models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in models.Tb1.objects.filter(name__contains="ven") #包括ven的 models.Tb1.objects.filter(name__icontains="ven") # icontains大小寫不敏感 models.Tb1.objects.filter(id__range=[1, 2]) # 範圍bettwen and startswith,istartswith, endswith, iendswith