#row方法:(摻雜著原生sql和orm來執行的操作)
res = cookbook.objects.raw('
select id as nid from epos_cookbook where id>%s
', params=[1, ])
print(res.columns) #
['nid']
print(type(res)) #
#在select裡面查詢到的資料orm裡面的要一一對應
res = cookbook.objects.raw("
select * from epos_cookbook")
(res)
for i in
res:
(i.create_date)
(i)
res = cookbook.objects.raw('
select * from epos_cookbook where id>%s
', params=[1, ])
#後面可以加引數進來
(res)
for i in
res:
#print(i.create_date)
print(i)
## select提供簡單資料
#person.objects.all().extra(select=) #
加在select後面
## where提供查詢條件
#person.objects.all().extra(where=["
first||last ilike 'jeffrey%'
"]) #
加乙個where條件
## table連線其它表
#book.objects.all().extra(table=['
'], where=['
last = author_last
']) #
加from後面
## params添引數
#!! 錯誤的方式 !!
first_name = '
joe'
#如果first_name中有sql特定字元就會出現漏洞
person.objects.all().extra(where=["
first = '%s'
" %first_name])
#正確方式
person.objects.all().extra(where=["
first = '%s'
"], params=[first_name])
from django.db importconnection
cursor=connection.cursor() #
如果需要配置資料庫
#cursor=connection['default'].cursor()
cursor.execute(''
) ret=cursor.fetchall()
(ret) #
((2, '小時光', decimal('10.00'), 2), (3, '未來可期', decimal('33.00'), 1), (4, '打破思維裡的牆', decimal('11.00'), 2), (5, '時光不散', decimal('11.00'), 3))
注意:如果在sql語句中有用到除法(%),需要使用%%來轉義,因為在str中%多用於格式化輸出。
在Django中使用原生sql
raw row方法 摻雜著原生sql和orm來執行的操作 res cookbook.objects.raw select id as nid from epos cookbook where id s params 1,print res.columns nid print type res 在se...
Django中使用原生Sql
在django中使用原生sql主要有以下幾種方式 一 extra 結果集修改器,一種提供額外查詢引數的機制 二 raw 執行原始sql並返回模型例項 三 直接執行自定義sql 這種方式完全不依賴model,前兩種還是要依賴於model 例項 使用extra 1 book.objects.filter...
Django中使用原生SQL
使用extra 結果集修改器,一種提供額外查詢引數的機制 models.book.objects.filter publisher name 人民出版社 extra where price 50 models.book.objects.filter publisher name 人民出版社 pric...