婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 手把手教你用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蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲免费av高清| 色妞www精品视频| 日本不卡视频一二三区| 国产乱子轮精品视频| 欧美日韩免费观看一区二区三区 | 精品无码三级在线观看视频| 国产成人免费高清| 7777精品伊人久久久大香线蕉完整版 | 国产欧美日韩激情| 亚洲一区在线播放| 94-欧美-setu| 国产日韩亚洲欧美综合| 久久国产乱子精品免费女| 色综合久久久久网| 亚洲综合一区二区| 欧美精品精品一区| 欧美aⅴ一区二区三区视频| 韩国精品久久久| 亚洲国产精品二十页| 丰满少妇久久久久久久| 日本一区二区视频在线观看| 国产精品香蕉一区二区三区| 久久精品欧美日韩精品| 99re66热这里只有精品3直播| 亚洲女性喷水在线观看一区| 欧美日韩在线综合| 麻豆国产91在线播放| 久久久久国产精品厨房| av中文字幕一区| 午夜天堂影视香蕉久久| 精品国产一区久久| 99久久精品久久久久久清纯| 日韩黄色一级片| 综合激情成人伊人| 久久免费国产精品| 4438x成人网最大色成网站| 国产v综合v亚洲欧| 日本不卡视频在线观看| 亚洲精品成a人| 国产精品私房写真福利视频| 日韩欧美一级在线播放| 欧美区视频在线观看| 成人午夜看片网址| 国产成人一区在线| 国产乱理伦片在线观看夜一区| 亚洲 欧美综合在线网络| 国产精品青草综合久久久久99| 91麻豆精品国产自产在线| 99re成人在线| 一本久道中文字幕精品亚洲嫩| 国产精品一区二区视频| 韩国精品一区二区| 国内精品伊人久久久久影院对白| 青青草国产精品97视觉盛宴| 国产日韩精品久久久| 国产精品传媒入口麻豆| 亚洲美女淫视频| 亚洲午夜久久久| 国产一区不卡视频| 99久久夜色精品国产网站| av电影在线不卡| 欧美日韩三级一区| 欧美三级电影在线看| 欧美成人精品高清在线播放| 久久精品夜色噜噜亚洲aⅴ| 国产精品午夜久久| 亚洲1区2区3区4区| 国产永久精品大片wwwapp | 亚洲欧美日韩在线不卡| 亚洲综合999| 国产在线国偷精品免费看| 精品久久一区二区| 国产天堂亚洲国产碰碰| 欧美精品一区二区三区一线天视频| 精品奇米国产一区二区三区| 日韩欧美中文字幕公布| 亚洲日本一区二区三区| 蜜臀久久久久久久| 91久久精品一区二区| 国产精品网站导航| 成人夜色视频网站在线观看| 制服.丝袜.亚洲.中文.综合| 欧美国产综合一区二区| 日韩精品成人一区二区在线| 欧美性受xxxx黑人xyx| 亚洲人成电影网站色mp4| 成人小视频免费观看| 日本一区二区三区电影| 狠狠色综合色综合网络| 精品国产免费人成电影在线观看四季| 亚洲嫩草精品久久| 91搞黄在线观看| 日韩国产精品久久| 久久综合久色欧美综合狠狠| 激情综合网av| 国产精品美女久久久久久久久| 懂色中文一区二区在线播放| 国产精品久久久久婷婷二区次 | 日韩欧美高清在线| 成人一级黄色片| 性久久久久久久| 久久这里只有精品6| 91视频在线观看免费| 日本美女视频一区二区| 国产三级一区二区| 欧美三级电影网| 高清久久久久久| 麻豆国产一区二区| 亚洲第一电影网| 亚洲人123区| 国产精品视频麻豆| 日韩欧美电影一二三| 在线观看欧美黄色| av综合在线播放| av电影在线不卡| 99re成人精品视频| 99久久精品一区二区| 成人国产视频在线观看| 国产一区免费电影| 麻豆精品一区二区三区| 日韩激情中文字幕| 日韩精品一二三| 秋霞电影网一区二区| 日欧美一区二区| 日韩在线卡一卡二| 日韩av一级片| 国产一区二区三区四区五区入口| 看国产成人h片视频| 国产.欧美.日韩| 一本色道a无线码一区v| 欧美亚洲免费在线一区| 欧美日韩不卡在线| 欧美一区二区三区视频免费| 欧美电视剧免费全集观看| 精品国产一区二区精华| 中文字幕在线观看一区二区| 亚洲色图一区二区| 另类中文字幕网| 色综合天天天天做夜夜夜夜做| 97精品电影院| 欧美日韩精品一区二区三区四区| 6080亚洲精品一区二区| 国产精品色哟哟| 午夜视频在线观看一区二区 | 亚洲三级视频在线观看| 视频一区二区三区中文字幕| 国产在线播放一区三区四| 中文字幕精品一区二区三区精品| 青青草国产精品97视觉盛宴| 亚洲人成网站影音先锋播放| 天天综合色天天| 欧美在线一二三| 亚洲视频每日更新| 高清久久久久久| 精品国产欧美一区二区| 日本午夜一本久久久综合| 91影院在线观看| 国产精品无码永久免费888| 国精产品一区一区三区mba视频| 欧美伊人久久大香线蕉综合69| 中文字幕一区视频| 99久久免费精品| 一个色妞综合视频在线观看| 成人av电影在线播放| 国产精品欧美极品| 国产成人免费9x9x人网站视频| 国产亚洲成av人在线观看导航| 国产在线国偷精品产拍免费yy| 日韩视频国产视频| 国产91清纯白嫩初高中在线观看| 国产色综合一区| 在线观看欧美黄色| 久久成人麻豆午夜电影| 国产女同性恋一区二区| 成人va在线观看| 免费高清不卡av| 亚洲天堂网中文字| 欧美另类一区二区三区| 免费成人你懂的| 国产精品免费网站在线观看| av在线不卡电影| 日本视频在线一区| 国产精品国产三级国产有无不卡 | 久久久av毛片精品| 99这里只有精品| 亚洲与欧洲av电影| 欧美日韩极品在线观看一区| 懂色av一区二区三区蜜臀| 日韩成人精品在线观看| 一区二区三区欧美亚洲| 久久尤物电影视频在线观看| 欧美久久高跟鞋激| 99免费精品在线| 成人福利电影精品一区二区在线观看| 亚洲国产精品一区二区www在线| 国产精品视频第一区| 欧美激情一区不卡| 国产偷国产偷亚洲高清人白洁| 精品国产区一区| 久久亚洲一级片|