1. 程式人生 > >Django 操作Mysql資料庫 對錶進行增刪改查

Django 操作Mysql資料庫 對錶進行增刪改查

首先說明:以下方法都是根據表已有的欄位新增資料,若想新增欄位,則需在類裡面新建靜態欄位,
可參考Django 操作資料庫建表  ,增刪改查在views.py 操作, 建表和欄位在models.py 操作

1、首先在 models.py 裡定義 任意 1個 模型類 本人定義 Asset,可自動生成對應的表

from django.db import models                    
classAsset(models.Model):                      #新建1個Asset表,欄位名稱為 hostname
    hostname=models.CharField
(max_length=50)

2、在 views.py 裡 定義 增刪改查的方法 ,下面案例為表增加欄位

方法1:表類名.objects.create( )   如.Asset.objects.create(hostname=name)

方法2: 生成一個例項化物件 ,然後儲存
          如.obj=Asset(hostname=name)
           obj.save()

from django.http import HttpResponse   #通過url顯示執行效果,則需要匯入此模組
from android.models import Asset       # 因為要操作具體的表,所以要匯入modle.py 中 定義的類
defAdd(request,name): a = Asset.objects.create(hostname=name) #給資料庫增加資料 ,hostname 為資料庫表中的欄位名稱 ,name 是你傳人的引數 print(name) #列印 引數具體樹枝 return HttpResponse('增加第{}資料成功'.format(a.id)) #通過佔位符format,來顯示具體修改來哪行ID ,

3、因為通過瀏覽器測試,所以需要配置  app下 urls.py 對映方法,不在工程下的url配置,是因為一般都通過分發來設定每個APP有不同的url 對映 ,詳細見 

Django 配置 urls.py 分發對映

方法: url(r'^add/(?P<name>\d*)/',Add),  注意:P要大寫

from django.conf.urls import url    #配置URLS.PY 預設需要匯入的模組
from android.views import Add       #配置URL 根據 views.py 中 Add 函式解析
urlpatterns = [            
     url(r'^index/',index),                       #以前測試,跟本例子無關
     url(r'^login/',login),                       #以前測試,跟本例子無關
     url(r'^list/(?P<name>\d*)/',list),           #以前測試,跟本例子無關
     url(r'^add/(?P<name>\d*)/',Add),             #配置瀏覽器路徑add 用Add函式解析  http:/xxx/add/2344
     url(r'^asd/(?P<id>\d*)/',Delete),            #配置瀏覽器路徑asd,用Delete解析 http:/xxx/asd/1
     url(r'^update/(?P<id>\d*)/(?P<hostname>\w*)/',Update),
]
#Django 1.10 url 對映規則 為列表,1.80 為元組,所以 逗號不要忘了加

刪除資料庫表的欄位

方法:Asset.objects.get(id=id).delete()  類名.objects.get(對應id)  #單條資料

         Asset.objects.filter(id=xxx).delete();   多條資料

         Asset.objects.all().delete()        全部刪除

defDelete(request,id):
    Asset.objects.get(id=id).delete()    #刪除資料庫欄位
    return HttpResponse('刪除 第{}行資料成功'.format(id))

更新(修改)資料庫表中的欄位

方法:a.獲取例項get(id=xxx),再save;  不存在會報錯
           b.update(指定列)                       不存在,返回none

方法1:get 獲取單條資料 ,設定單條資料的值,然後save()

defUpdate(request,id,hostname):
    obj=Asset.objects.get(id=id)
    obj.hostname=hostname
    obj.save()
    return HttpResponse('更新修改第{}行資料成'.format(id))

方法2:通過filter(id=xxx).update(xxx=xxx)  獲取多條物件的集合

即批量修改資料庫 表中的欄位

 Asset.objects.filter(id__gt=id).update(hostname=hostname)  ID大於XXX

其他批量過濾方法:

過濾:filter(name='xxx');filter(name__contains='xxx');filter(name__icontains='xxx')(大小寫無關的LIKE);(id__in = [1,2,3]) ;

注意上面都是兩個"_" 號  且條件 查詢提交為 and
排序:order_by("name") =asc ;order_by("-name")=desc
返回第n-m條:第n條[0];前兩條[0:2]
指定對映:values
數量:count()
聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))

參考: