日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python直接执行*.sql_Python Django 之 直接执行自定义SQL语句(一)

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python直接执行*.sql_Python Django 之 直接执行自定义SQL语句(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三、raw()方法

1、raw()用法

The raw() manager method can be used to perform raw SQL queries that return model instances:

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

用法:

>>> for p in Person.objects.raw('SELECT * FROM Person LIMIT 2'):

...???? print p

John Smith

Jane Jones

注意,原始SQL里的model,如果在 db_table 沒有定義,則使用app的名稱,后面下劃線 后面接模型類的名稱,如"Myblog_New";上面的例子,在定義類的時候已經這樣處理了:

Class New(models.Model):

......

......

#自定義表名

class Meta:

db_table = 'New'

2、查詢字段隱射到模型字段(Mapping query fields to model fields)

raw() automatically maps fields in the query to fields on the model.并且是通過名稱來匹配,這意味著我們可以使用SQL子句(clause)

>>> Person.objects.raw('''SELECT first AS first_name,

...????????????????????????????? last AS last_name,

...????????????????????????????? bd AS birth_date,

...????????????????????????????? pk as id,

...?????????????????????? FROM some_other_table''')

返回一個RawQuerySet對象

3、索引查找(Index lookups)

first_person = Person.objects.raw('SELECT * from myapp_person')[0]

first_person = Person.objects.raw('SELECT * from myapp_person LIMIT 1')[0]

#然而,索引和切片不是在數據庫級別上執行(除LIMIT外)

4、延遲模型字段(Deferring model fields)

Fields may also be left out(left out:忽視,不考慮;被遺忘),這意味著該字段的查詢將會被排除在根據需要時的加載。

>>> for p in Person.objects.raw('SELECT id, first_name FROM myapp_person'):

...???? print p.first_name, # 這將檢索到原始查詢

...???? print p.last_name # 這將檢索需求

...

John Smith

Jane Jones

這個例子其實檢索了三個字段,一個主鍵(必需)、一個原始SQL字段、一個需求字段。這里主鍵字段不能省略,否則會出錯,如下:

5、傳遞參數(Passing parameters into raw() )

如果需要執行參數化查詢,您可以使用params參數原始()

注意兩點:

(1)、必須使用[參數],否則出錯:

(2)、這種方式不對:

Error:

>>> query = 'SELECT * FROM myapp_person WHERE last_name = %s' % lname

>>> Person.objects.raw(query)

轉載自:https://www.cnblogs.com/hello-/articles/9095444.html

總結

以上是生活随笔為你收集整理的python直接执行*.sql_Python Django 之 直接执行自定义SQL语句(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。