Django 操作Mysql數據庫 對錶進行增刪改查
首先說明:以下方法都是根據表已有的字段添加數據,若想新增字段,則需在類裏面新建靜態字段,
可參考Django 操作數據庫建表 ,增刪改查在views.py 操作, 建表和字段在models.py 操作
1、首先在 models.py 裏定義 任意 1個 模型類 本人定義 Asset,可自動生成對應的表
from django.db import models
class Asset(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 中 定義的類
def Add(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() 全部刪除
def Delete(request,id):
Asset.objects.get(id=id).delete() #刪除數據庫字段
return HttpResponse('刪除 第{}行數據成功'.format(id))
更新(修改)數據庫表中的字段
方法:a.獲取實例get(id=xxx),再save; 不存在會報錯
b.update(指定列) 不存在,返回none
方法1:get 獲取單條數據 ,設置單條數據的值,然後save()
def Update(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'))
參考: