django執行資料庫查詢之後實現返回的結果集轉json
阿新 • • 發佈:2020-03-31
django執行sql語句後得到的返回結果是一個結果集,直接把結果轉json返回給前端會報錯,需要先遍歷轉字典在轉json,特別注意model_to_dict()只會將結果集的第一條資料轉字典,如果你是根據指定條件查一條資料返回的,直接用model_to_dict()沒問題,如果執行的是all()或filter()到多條或全部的資料,這個時候去model_to_dict()這個集合就不行了,那麼先遍歷這個集合在轉字典,然後轉json就ok了
dic = {} res = models.tables.objects.all().order_by('-id') L = [] b = model_to_dict(res) L.append(b) dic['code'] = '1' dic['message'] = '' dic['result'] = L return HttpResponse(json.dumps(dic,ensure_ascii=False))
order_by('-id'):是將結果集根據ID倒序排序
補充知識:django執行sql根據欄位顯示對應的資料方式
L = [] cursor.execute(sql) desc = cursor.description # 獲取欄位的描述,預設獲取資料庫欄位名稱 data_dict = [dict(zip([col[0] for col in desc],row)) for row in cursor.fetchall()] # 列表表示式把資料組裝起來 for online_dict in data_dict: # 判斷如果時間型別要轉出字串,後期碰到什麼型別不能轉的在加 for key in online_dict: if type(online_dict[key]) in (datetime,pymysql.TIMESTAMP,pymysql.DATE,pymysql.TIME,YEAR): online_dict[key] = online_dict[key].strftime( "%Y-%m-%d %H:%M:%S") else: pass L.append(online_dict) conn.commit() cursor.close() conn.close() dic['code'] = '2' dic['message'] = '' dic['result'] = L return HttpResponse(json.dumps(dic,ensure_ascii=False))
以上這篇django執行資料庫查詢之後實現返回的結果集轉json就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。