Django之mysql表單操做

  在Django之ORM模型中總結過django下mysql表的建立操做,接下來總結mysql表記錄操做,包括表記錄的增、刪、改、查。html

1. 添加表記錄

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")

2. 刪除表記錄

  models.UserInfo.objects.filters(user="zhangsan").delete()sql

3. 修改表記錄

  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

4. 查詢表記錄

4.1 查詢相關的API

(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()

  排除條件,查看除了()的其餘信息

  models.UserInfo.objects.exclude(user="zhangsan")

(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,並不須要判斷全部的數據

4.2 雙下劃線之表單查詢

  看下面的例子後應該就很清除了

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 
相關文章
相關標籤/搜索