Django 資料庫操作
阿新 • • 發佈:2018-12-11
設定Django主APP下的__init__.py 新增上
import pymysql pymysql.install_as_MySQLdb()並且在Django主APP下的settings.py 檔案修改DATABASES函式 如下
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', #資料庫引擎 'NAME': 'mymoxing', #資料庫名稱 'USER':'admin', #資料庫的使用者名稱 'PASSWORD':'Root110qwe', #資料庫的密碼 'HOST':'127.0.0.1', #mysql伺服器的域名或者IP地址 'RORT':'3306', #mysql的一個埠號,預設是3306 } }匯入Django裡的相關庫方法 from django.db.models import Count,Avg,Max,Min,Sum 匯入Django模型裡的模型類 #Test是在模型中定義的類方法 對映一下 就會在Linux伺服器上自動建立資料庫表結構 from .models import Test 建立的一個Django求資料庫某表某欄位的一個平均值 def tests(request): rs = Test.objects.all().aggregate(Avg('age')) print(rs) return HttpResponse('平均值輸出成功')
輸出值為:{'age__avg': 21.0} 格式是字典 那麼 鍵 'age__avg' 是 欄位和方法組成 我們可以重新命名 如下: rs = Test.objects.all().aggregate(pingjunzhi=Avg('age')) 輸出值為 {'pingjunzhi': 21.0} 其他函式使用 平均值 Avg 最小值 Min 最大值 Max 求和 Sum 需要先使用 aggregate() 方法 再使用相關函式 rs = Test.objects.all().aggregate(Avg('id'),Min('id'),Max('id'),Sum('id')) 分組查詢需要先用到 values字典格式輸出 annotate是分組查詢 rs = Test.objects.all().values('note').annotate(count=Count('note')).values('note','count') 例項化資料庫Test 字典格式化輸出'note'欄位 分組查詢 獲取note個數並且賦值給count 格式化輸出'note','count'兩個欄位。 <QuerySet [{'note': '畢業於天津職業大學', 'count': 1}, {'note': '畢業於天津輕工學院', 'count': 2}, {'note': '畢業於天津大學', 'count': 1}]>
from django.db.models import F # F查詢 rs = Student.objects.filter(department__d_id__lt= F('s_id')) #add1 = Test.objects.all().update(age=F('age')+1) #給年齡欄位+1歲 #Q查詢 如果你需要執行更復雜的查詢(例如OR語句),你可以使用Q物件。Q物件可以使用&(and)、|(or)操作符組合起來 使用~(not)操作符在Q物件前表示取反 from django.db.models import Q rs = Test.objects.filter(name='劉剛',age=22) # rs = Test.objects.filter(Q(name='劉剛')|Q(name='馬超傑')) rs = Test.objects.filter(Q(name='馬超傑')&~Q(id=3))
123完