前幾天,一直在研究django框架,發現它自身封裝了很多有用的API,很有意思。比如,數據庫操作基本的創表,查詢,插值,更新,刪除都有,很方便,再加上json庫可以直接將數據json化,通過服務器傳給前端並顯示,連數據庫也很快,響應迅速。
1 from blog.models import SfhdPredictDataTest 2 w = SfhdPredictDataTest.objects.all().values('time') 3 4 print(w)
1 lists = Chart.objects.values_list('time','predict') 2 3 list(lists)


數據庫訪問
app.views的代碼:主要是從數據庫取數據,怎么達到實時呢,我是這樣子的:反向查詢數據庫,(假設數據庫的數據一直在插入)我們用切片切去反向后的表的前10個數據(我用的數據是3秒間隔的(三秒插入一次))。切片操作還有一個好處可以減少內存消耗,和加快查詢速度,因為這張表本身很大且數據量巨大,列數達到130列,所以呢切片操作很適合。
怎么才能達到實時呢:我們在前端加一個ajax請求外面套一個定時器,定時間隔保證取得數據正好是插的數據量。
1 from django.shortcuts import render 2 from django.http import HttpResponse 3 # Create your views here. 4 from charts.models import Sfhd130Cols 5 import json,time 6 def index(request): 7 8 return render(request,'charts/index.html') 9 10 def charts_data(request): 11 # b = Sfhd130Cols.objects.all().order_by('-time').values('time', 'amb05cq04bm_av')[:100] 12 # 13 14 b = Sfhd130Cols.objects.order_by('-time').values('time', 'amb05cq04bm_av')[10:110] 15 b = b.reverse() #從數據庫讀取數據后 queryset格式要先倒序才能list列表化 16 b = list(b) 17 # print(b, "hello") 18 for lis in b: 19 lis['time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lis['time'])) 20 lists = json.dumps(b, indent=4) 21 22 23 # lis['time'] = time_change(lis['time']) 24 return HttpResponse(lists) 25 26 def charts_update(request): 27 b = Sfhd130Cols.objects.order_by('-time').values('time', 'amb05cq04bm_av')[:6] 28 # b = b.reverse() # 從數據庫讀取數據后 queryset格式要先倒序才能list列表化 29 b = list(b) 30 # print(b, "hello") 31 for lis in b: 32 lis['time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lis['time'])) 33 lists = json.dumps(b, indent=4) 34 35 return HttpResponse(lists) 36 #時間戳轉時間 37 def time_change(date): 38 date = time.localtime(date) 39 return time.strftime('%Y-%m-%d %H:%M:%S',date)
還有一個重要的:當從數據庫取出數據后是一個queryset類型,如果要倒序的話,要按照先reverse再list的操作,不然會得到空的list(就這里我困了好久,一直以為是數據庫沒取到數據~~~~~)
這是我最近遇到的一些問題,和解決的方法,
記我踩過的坑