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

主頁 > 知識庫 > django執行原生SQL查詢的實現

django執行原生SQL查詢的實現

熱門標簽:西青語音電銷機器人哪家好 成都呼叫中心外呼系統哪家強 旅游廁所地圖標注怎么弄 百應電話機器人總部 地圖標注與注銷 宿州電話機器人哪家好 無錫智能外呼系統好用嗎 南昌地圖標注 電梯新時達系統外呼顯示e

執行原生 SQL 查詢

Django 允許你用兩種方式執行原生 SQL 查詢:

  • 你可以使用 Manager.raw() 來 執行原生查詢并返回模型實例。
  • 或者完全不用模型層 直接執行自定義 SQL。

1、執行原生查詢

管理器方法 raw() 能用于執行原生 SQL 查詢,就會返回模型實例:

Manager.raw(raw_query, params=None, translations=None)

該方法接受一個原生 SQL 查詢語句,執行它,并返回一個 django.db.models.query.RawQuerySet 實例。這個 RawQuerySet 能像普通的 QuerySet 一樣被迭代獲取對象實例。

1.1 普通查詢

class Person(models.Model):
    first_name = models.CharField(...)
    last_name = models.CharField(...)
    birth_date = models.DateField(...)

然后你可以像這樣執行自定義 SQL:

for p in Person.objects.raw('SELECT * FROM app_person'): # django默認的表名是app名加類名
    print(p)
​# 沒有查詢到就報錯

1.2 將查詢字段映射為模型字段

raw() 字段將查詢語句中的字段映射至模型中的字段。
查詢語句中的字段排序并不重要。換而言之,以下兩種查詢是一致的:

Person.objects.raw('SELECT id, first_name, last_name, birth_date FROM app_person')

Person.objects.raw('SELECT last_name, birth_date, first_name, id FROM app_person')

匹配是根據名字來的。這意味著你可以使用 SQL 的 AS 子句將查詢語句中的字段映射至模型中的字段。所以,若你還有一些數據表包含了 Person 數據,你可以很方便的將其映射至 Person 實例:

>>> Person.objects.raw('''SELECT first AS first_name,
...                              last AS last_name,
...                              bd AS birth_date,
...                              pk AS id,
...                       FROM app_person''')

只要名字對上了,模型實例就會被正確創建。

或者,你可以用 raw() 的 translations 參數將查詢語句中的字段映射至模型中的字段。這是一個字典,將查詢語句中的字段名映射至模型中的字段名。例如,上面的查詢也能這樣寫:

>>> name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
>>> Person.objects.raw('SELECT * FROM some_other_table', translations=name_map)

1.3 索引查詢

raw() 支持索引,所以,若你只需要第一個結果就這樣寫:

>>> first_person = Person.objects.raw('SELECT * FROM app_person')[0]

1.4 將參數傳給 raw()

如果你需要執行參數化的查詢,可以使用 raw() 的 params 參數:

>>> lname = 'Doe'
>>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])

params 是一個參數字典。你將用一個列表替換查詢字符串中 %s 占位符,或用字典替換 %(key)s 占位符(其中, key 理所應當由字典 key 替換),不論你使用哪個數據庫引擎。這些占位符會被 params 參數的值替換。
!!!必須以列表形式傳入參數,格式一定是這樣寫,不能寫成字符串

2、直接執行自定義 SQL

繞過模型層。

對象 django.db.connection 代表默認數據庫連接。要使用這個數據庫連接,調用 connection.cursor() 來獲取一個指針對象。然后,調用 cursor.execute(sql, [params]) 來執行該 SQL 和 cursor.fetchone(),或 cursor.fetchall() 獲取結果數據。

from django.db import connection
​
def my_sql(self):
    with connection.cursor() as cursor:
        cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
        cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
        row = cursor.fetchone()
​
    return row

要避免 SQL 注入,你絕對不能在 SQL 字符串中用引號包裹 %s 占位符。
注意,若要在查詢中包含文本的百分號,你需要在傳入參數使用兩個百分號:

cursor.execute("SELECT foo FROM bar WHERE baz = '30%%' AND id = %s", [self.id])

2.1 指定連接數據庫

用 django.db.connections 獲取指定數據庫的連接(和指針)。 django.db.connections 是一個類字典對象,它允許你通過連接別名獲取指定連接:

from django.db import connections
with connections['my_db_alias'].cursor() as cursor:

 到此這篇關于django執行原生SQL查詢的實現的文章就介紹到這了,更多相關django執行原生SQL查詢內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • django執行原始查詢sql,并返回Dict字典例子
  • 在Django的模型中執行原始SQL查詢的方法

標簽:辛集 渭南 七臺河 雅安 濰坊 西安 贛州 許昌

巨人網絡通訊聲明:本文標題《django執行原生SQL查詢的實現》,本文關鍵詞  django,執行,原生,SQL,查詢,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《django執行原生SQL查詢的實現》相關的同類信息!
  • 本頁收集關于django執行原生SQL查詢的實現的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一区二区三区思思人| 国产一区二区视频在线播放| 石原莉奈一区二区三区在线观看| 蜜桃视频一区二区三区在线观看| 国产专区综合网| 色播五月激情综合网| 欧美精品第一页| 国产欧美一区二区三区沐欲| 亚洲一区二区三区四区中文字幕| 麻豆精品在线观看| 99久久综合精品| 日韩欧美国产wwwww| 亚洲欧洲国产日本综合| 免费不卡在线观看| 91在线免费看| 欧美成人a视频| 一区二区三区国产豹纹内裤在线| 韩国精品主播一区二区在线观看 | 久久久久久久久久久久电影| 亚洲免费看黄网站| 激情综合色综合久久综合| 色婷婷av一区二区| 欧美成人在线直播| 亚洲一区二区三区四区五区黄| 国内成+人亚洲+欧美+综合在线| 在线观看日韩电影| 日本一区二区免费在线观看视频| 午夜精品爽啪视频| 99九九99九九九视频精品| 日韩一区二区三区在线视频| 亚洲理论在线观看| 国产**成人网毛片九色| 欧美一区永久视频免费观看| 亚洲欧美激情小说另类| 国产精品一区免费在线观看| 91精品中文字幕一区二区三区| 亚洲欧洲av在线| 国产伦精品一区二区三区在线观看| 欧美性一二三区| 亚洲欧洲一区二区在线播放| 久久国产精品区| 欧美视频一区在线观看| 综合久久久久久| 国产成人免费视频精品含羞草妖精| 欧美精品第一页| 亚洲最色的网站| 99国产精品视频免费观看| 国产农村妇女毛片精品久久麻豆 | 精品999久久久| 天天av天天翘天天综合网| 91国偷自产一区二区三区成为亚洲经典 | 自拍av一区二区三区| 国产成人在线免费| 久久亚区不卡日本| 久久99九九99精品| 精品国免费一区二区三区| 舔着乳尖日韩一区| 欧美日韩成人在线| 午夜精品福利一区二区三区av | 奇米精品一区二区三区在线观看 | 成人性视频免费网站| 久久蜜桃av一区精品变态类天堂| 久久av中文字幕片| 精品噜噜噜噜久久久久久久久试看| 日本一道高清亚洲日美韩| 欧美乱妇15p| 日本在线不卡一区| 日韩三级在线观看| 美女视频免费一区| 亚洲精品一区二区三区四区高清| 久久 天天综合| 国产午夜一区二区三区| 国产福利91精品一区二区三区| 久久久国产一区二区三区四区小说| 国产毛片精品视频| 中文一区二区完整视频在线观看| 成人黄色免费短视频| 亚洲视频中文字幕| 欧美系列日韩一区| 日韩精品一区第一页| 日韩欧美国产成人一区二区| 国精产品一区一区三区mba视频 | 色综合久久综合网97色综合 | 日韩亚洲欧美综合| 精品一区二区三区免费观看| 国产无遮挡一区二区三区毛片日本| 国产成人高清在线| 亚洲丝袜另类动漫二区| 欧美日韩国产不卡| 国模无码大尺度一区二区三区| 国产精品嫩草99a| 日本高清不卡一区| 免费在线看一区| 久久久久高清精品| 97久久久精品综合88久久| 亚洲自拍偷拍综合| 精品国产一区二区在线观看| 成人一区二区在线观看| 亚洲色图清纯唯美| 欧美一区二区视频在线观看2022| 国内精品免费**视频| 成人免费一区二区三区在线观看| 欧美色精品在线视频| 看国产成人h片视频| 中文字幕av在线一区二区三区| 日本高清视频一区二区| 久久精品国产99国产精品| 国产精品久久久久一区| 欧美高清dvd| 成人午夜视频网站| 日韩在线播放一区二区| 国产欧美视频在线观看| 欧美日韩卡一卡二| 丁香亚洲综合激情啪啪综合| 亚洲尤物在线视频观看| 久久影院视频免费| 欧美亚洲丝袜传媒另类| 国产毛片精品视频| 午夜免费欧美电影| 国产精品国产三级国产| 欧美一区二区精美| 91免费国产在线| 激情综合色综合久久综合| 亚洲一区中文在线| 欧美激情一区二区三区不卡| 欧美久久婷婷综合色| 成人黄色免费短视频| 麻豆一区二区三| 一区二区国产视频| 日本一区二区综合亚洲| 制服丝袜亚洲播放| 色综合久久久久综合| 国产乱一区二区| 日韩激情视频在线观看| 亚洲精品久久久久久国产精华液| 欧美成人欧美edvon| 欧美午夜精品免费| 99在线精品视频| 国产精品自在欧美一区| 日韩vs国产vs欧美| 亚洲综合一区二区三区| 国产精品久久久久aaaa樱花| 精品久久久久一区| 91麻豆精品国产91久久久久久久久 | 亚洲欧洲综合另类| 国产亚洲一二三区| 日韩免费高清视频| 欧美老肥妇做.爰bbww视频| 91小视频免费观看| 成人午夜av在线| 国产精品一区二区久久精品爱涩| 婷婷亚洲久悠悠色悠在线播放| 亚洲色图制服诱惑| 国产精品高潮久久久久无| 久久久久一区二区三区四区| 在线不卡免费欧美| 欧美日韩国产综合久久| 91黄色小视频| 色天天综合色天天久久| www.99精品| 成人av影视在线观看| 国产激情精品久久久第一区二区| 蜜臀久久99精品久久久画质超高清| 亚洲成av人片在线| 亚洲国产另类av| 亚洲一区二区高清| 一区二区三区成人在线视频 | 制服丝袜亚洲网站| 欧美放荡的少妇| 欧美精品高清视频| 这里只有精品视频在线观看| 欧美日韩综合在线免费观看| 精品视频全国免费看| 欧美性高清videossexo| 欧美日免费三级在线| 欧美裸体bbwbbwbbw| 欧美二区三区的天堂| 日韩一区二区三区av| 精品日韩欧美在线| 2020国产精品| 中文字幕欧美国产| 中文字幕字幕中文在线中不卡视频| 国产精品国产自产拍在线| 亚洲欧美区自拍先锋| 亚洲高清视频中文字幕| 日日摸夜夜添夜夜添亚洲女人| 人人爽香蕉精品| 久久av资源网| 懂色av中文一区二区三区| 99re这里只有精品首页| 91久久精品午夜一区二区| 欧美日韩视频第一区| 欧美一卡在线观看| 久久丝袜美腿综合| 中文av一区特黄| 亚洲综合男人的天堂| 免费久久99精品国产| 国产精品一区在线| 91蝌蚪porny成人天涯| 欧美亚洲一区三区|