校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 手把手教你用Django執行原生SQL的方法

手把手教你用Django執行原生SQL的方法

熱門標簽:外呼系統前面有錄音播放嗎 400電話辦理費用收費 高德地圖標注字母 柳州正規電銷機器人收費 申請辦個400電話號碼 千呼ai電話機器人免費 騰訊地圖標注有什么版本 深圳網絡外呼系統代理商 鎮江人工外呼系統供應商

前言

Hey,各位小伙伴,這次怎么來玩一下,如何使用Django執行原生SQL。

我們都知道,Python在web界的扛把子——Django,可謂是集大成為統一,各種各樣的插件、forms組件、model模型、Admin后臺等等,后面我會專門出文章娓娓道來,反正就是一個字,NB。

本次就來學一下,如何在Django執行原生語句。

起因

在使用Django時,一般情況下,我們使用Django自帶的model查詢是沒有問題的,基本能滿足80%的問題

但是,但是,那20%就不要了嗎???肯定不行哎,小孩才做選擇

在Django執行原生SQL有以下三種方式

  • extra
  • raw
  • django connection

一般情況下,就以上三種方式

表結構

文件:django_project/app01/models

class Book(models.Model): 
  title = models.CharField(verbose_name="書名", max_length=32) 
  describe = models.TextField(verbose_name="描述") 
  author = models.CharField(verbose_name="作者", max_length=32) 
  publisher = models.CharField(verbose_name="出版社", max_length=32) 
  publisher_date = models.DateField(verbose_name="publisher") 

就是一個很簡單的圖書表

通過admin錄入一些數據測試使用

extra方式

強烈建議,不用學,沒毛用

raw方式

這個相比較extra,還是比較有用的,

語法如下

models.表名.objecs.raw(sql) 
models.表名.objecs.raw(sql,[參數1,參數2]) 

注:如果沒有參數,就只寫sql語句,如果由參數,后面需要用列表,如圖所示

舉例

返回的仍然一個個的Book對象

真正的原生sql方式

上述的,其實還是和django的model有些綁定。但是我就是說,我就是想要原生sql,不要跟任何綁定。

這里說一下,千萬不要在django使用pymysql執行原生sql,會發生一些奇怪的問題。一定要導入from django.db import connection執行sql。代碼如下:

from django.db import connection 
def book_list(request): 
  # 真正的原生sql, 
  cursor = connection.cursor() 
  print(type(cursor)) 
  cursor.execute("select * from app01_book where id=%s", [1, ]) 
  raw = cursor.fetchall() 
  print(raw) 

返回內容如下圖所示:

可以看到,返回的是列表里面套一個個的數組。我就在想,有沒有什么辦法能將查詢出來的sql,直接返回成字典呢?答案是當然可以!

執行原生sql并且返回成dict

我將執行原生sql并且直接返回成字典的方式封裝成了兩個函數

一個是查詢多個,代碼如下所示:

def query_all_dict(sql, params=None): 
  ''' 
  查詢所有結果返回字典類型數據 
  :param sql: 
  :param params: 
  :return: 
  ''' 
  with connection.cursor() as cursor: 
    if params: 
      cursor.execute(sql, params=params) 
    else: 
      cursor.execute(sql) 
    col_names = [desc[0] for desc in cursor.description] 
    row = cursor.fetchall() 
    rowList = [] 
    for list in row: 
      tMap = dict(zip(col_names, list)) 
      rowList.append(tMap) 
    return rowList 

一個是查詢一個,代碼如下所示:

def query_one_dict(sql, params=None): 
  """ 
  查詢一個結果返回字典類型數據 
  :param sql: 
  :param params: 
  :return: 
  """ 
  with connection.cursor() as cursor: 
    if params: 
      cursor.execute(sql, params=params) 
    else: 
      cursor.execute(sql) 
    col_names = [desc[0] for desc in cursor.description] 
    row = cursor.fetchone() 
    tMap = dict(zip(col_names, row)) 
    return tMap 

用法如下,直接在視圖中調用函數

返回結果如下,直接是列表套字典格式

那查詢帶條件的怎么辦哪,其實和pymysql一個樣

返回結果

但是有個問題,上面的查詢,我們明明知道,讓只會返回一個值,但是還是返回的是列表套字典格式,似乎不太對吶?

其實上述我寫的是兩個辦法,如果確定就查詢一個值,使用query_one_dict方法。

上述總結

django中執行原生sql有3種方式,extra,raw,from django.db import connection

其中extra基本沒用,raw湊合,但是和models有綁定,connection最靈活,但是默認返回的是[tuple,tuple,tuple,]格式

經過改良,封裝出兩個方法,query_all_dict,query_one_dict,一個是查詢多個,一個是查詢單個,并且返回成[dict,dict,dict,]

建議

只使用query_all_dict,query_one_dict

項目代碼

django_exec_sql.zip 

需要本文完整代碼的小伙伴,可以在本公眾號后臺回復關鍵字:原生SQL,進行獲取。

總結

上述以入門的方式解決了安排了以下如何通過django執行原生sql。

用微笑告訴別人,今天的我比昨天強,今后也一樣。

到此這篇關于手把手教你用Django執行原生SQL的方法的文章就介紹到這了,更多相關Django執行原生SQL內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • django 鏈接多個數據庫 并使用原生sql實現
  • python django 原生sql 獲取數據的例子
  • django配置連接數據庫及原生sql語句的使用方法
  • Django原生sql也能使用Paginator分頁的示例代碼

標簽:哈爾濱 郴州 大慶 烏蘭察布 烏蘭察布 平頂山 海南 合肥

巨人網絡通訊聲明:本文標題《手把手教你用Django執行原生SQL的方法》,本文關鍵詞  手把手,教,你用,Django,執行,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《手把手教你用Django執行原生SQL的方法》相關的同類信息!
  • 本頁收集關于手把手教你用Django執行原生SQL的方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    精品亚洲免费视频| 美女视频一区二区| 国产精品久久久久影视| 日韩一区二区电影| 日韩欧美高清在线| 精品国产乱码91久久久久久网站| 日韩欧美一二三四区| 精品久久一二三区| 久久品道一品道久久精品| 国产调教视频一区| 国产精品国产自产拍高清av | 7799精品视频| 欧美二区在线观看| 精品国偷自产国产一区| 久久综合九色综合97婷婷女人| 26uuu国产在线精品一区二区| 国产日韩欧美精品在线| 亚洲欧美激情小说另类| 亚洲aaa精品| 国产精品自拍网站| 99久久精品国产一区| 欧美日韩午夜在线| 久久夜色精品国产欧美乱极品| 国产亚洲综合在线| 一区二区三区日韩欧美精品| 日本欧美一区二区三区乱码| 国产成人福利片| 91视频免费看| 日韩欧美亚洲国产另类| 欧美激情一区三区| 五月天久久比比资源色| 国产精品影视网| 一本高清dvd不卡在线观看| 欧美喷潮久久久xxxxx| 久久久久久综合| 亚洲国产精品欧美一二99 | 久久影音资源网| 亚洲天天做日日做天天谢日日欢| 亚洲国产精品久久一线不卡| 国产馆精品极品| 欧美日韩一区二区三区四区五区| 久久精品夜夜夜夜久久| 天天影视网天天综合色在线播放| 国产在线精品免费| 欧美午夜一区二区| 国产精品午夜春色av| 美女一区二区三区在线观看| 色综合久久久久综合体| 久久久久久免费网| 五月婷婷激情综合网| 成人午夜免费电影| 久久嫩草精品久久久精品一| 午夜av区久久| 欧美性一级生活| 亚洲欧洲精品一区二区三区| 国内成人自拍视频| 欧美日产在线观看| 亚洲精品久久嫩草网站秘色| 国产 日韩 欧美大片| 日韩久久久精品| 天堂成人国产精品一区| 欧美自拍偷拍一区| 亚洲乱码国产乱码精品精小说| 成人久久视频在线观看| 精品成人佐山爱一区二区| 视频一区欧美精品| 欧美美女喷水视频| 亚洲国产精品一区二区www在线| 色先锋资源久久综合| 自拍av一区二区三区| 一本在线高清不卡dvd| 自拍偷拍欧美精品| 色婷婷亚洲婷婷| 一区二区视频在线看| 色香蕉成人二区免费| 亚洲伦在线观看| 日本韩国欧美国产| 精品日韩欧美在线| 91精品麻豆日日躁夜夜躁| 精品美女被调教视频大全网站| 99精品视频在线观看| 555www色欧美视频| 日本免费新一区视频| 51午夜精品国产| 久久99久久99小草精品免视看| 日韩视频免费直播| 国产一区二三区| 日本一区二区电影| 在线观看亚洲精品| 婷婷综合五月天| 精品国产乱码久久久久久蜜臀| 国产激情视频一区二区三区欧美| 欧美韩国日本综合| 91福利国产成人精品照片| 亚洲成人综合网站| 欧美va日韩va| 成人午夜av影视| 亚洲成人自拍偷拍| 亚洲精品一区二区三区99| 成人黄页毛片网站| 午夜影视日本亚洲欧洲精品| 日韩欧美www| av综合在线播放| 日本美女一区二区| 国产精品久久久久久久久快鸭| 欧美午夜精品久久久久久超碰| 免费成人美女在线观看| 欧美国产国产综合| 欧美日韩国产色站一区二区三区| 精品一区二区三区在线观看国产| 亚洲视频一二三区| wwwwww.欧美系列| 欧美中文字幕一区二区三区| 狠狠狠色丁香婷婷综合激情| 亚洲精品高清视频在线观看| xnxx国产精品| 在线不卡欧美精品一区二区三区| 国产91富婆露脸刺激对白| 日韩制服丝袜先锋影音| 中文字幕一区二区三区四区不卡| 在线播放国产精品二区一二区四区| 国产一区二区不卡| 秋霞成人午夜伦在线观看| 亚洲视频一二区| 国产午夜精品在线观看| 日韩一区二区三区电影| 欧洲一区在线观看| 97se亚洲国产综合在线| 国产精品77777| 国内精品久久久久影院薰衣草 | 亚洲一区在线看| 国产精品欧美一区喷水| 久久综合九色综合97婷婷| 欧美人xxxx| 欧美乱妇15p| 欧美视频自拍偷拍| 色哟哟日韩精品| 99精品国产99久久久久久白柏| 国产在线视视频有精品| 久久精工是国产品牌吗| 免费高清在线一区| 免费人成黄页网站在线一区二区| 亚洲一线二线三线久久久| 一区二区三区四区不卡视频| 亚洲色图丝袜美腿| 亚洲免费在线播放| 亚洲精品国产a久久久久久| 亚洲欧美日韩国产成人精品影院| 亚洲欧美综合网| 亚洲精品写真福利| 亚洲亚洲人成综合网络| 亚洲综合久久av| 亚洲不卡在线观看| 偷拍日韩校园综合在线| 午夜精品影院在线观看| 视频在线观看91| 久久99精品国产.久久久久 | 国产精品久久久久aaaa樱花| 亚洲国产成人在线| 亚洲日本一区二区三区| 亚洲欧美日韩在线播放| 一二三区精品福利视频| 亚洲国产一区二区视频| 日韩精品乱码av一区二区| 麻豆专区一区二区三区四区五区| 精品一区二区三区欧美| 国精产品一区一区三区mba视频| 国产一区二区三区黄视频| 国产iv一区二区三区| 91麻豆产精品久久久久久 | 五月激情六月综合| 蜜桃免费网站一区二区三区| 国内精品久久久久影院色| 播五月开心婷婷综合| 色欧美88888久久久久久影院| 欧美日韩高清在线播放| 久久综合色之久久综合| 亚洲男人的天堂av| 久久不见久久见中文字幕免费| 成人免费看片app下载| 欧洲一区二区三区在线| 日韩欧美黄色影院| 中文字幕五月欧美| 奇米色777欧美一区二区| 成人高清视频在线| 欧美区在线观看| 国产精品麻豆久久久| 日日夜夜免费精品视频| 成人性生交大片免费看在线播放| 91黄视频在线| 2020国产精品| 婷婷综合久久一区二区三区| 成人免费看片app下载| 91精品久久久久久蜜臀| 亚洲男人的天堂在线aⅴ视频| 狠狠色丁香久久婷婷综| 欧美在线观看视频一区二区三区| 久久久久久久久久久电影| 午夜精品一区二区三区电影天堂| 国产成a人亚洲|