1. 程式人生 > >Django 資料庫操作

Django 資料庫操作

設定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完