1. 程式人生 > 程式設計 >django執行資料庫查詢之後實現返回的結果集轉json

django執行資料庫查詢之後實現返回的結果集轉json

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就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。