django中提供了乙個raw()方法來使用sql語句進行查詢
class
person
(models.model)
: first_name = models.charfield(max_length=50)
last_name = models.charfield(max_length=50)
birth_date = models.datefield(max_length=50)
person.objects.raw(
)
使用translations將查詢到的字段對映到模型字段
name_map =
person.objects.raw(
'select * from some_other_table'
, translations=name_map)
如果你只想要第一條資料,可以這樣使用
first_person = person.objects.raw()[
0]first_person = person.objects.raw()[
0]當資料庫中的資料很多的時候,最好使用第二個方法
如果需要執行引數化查詢,可以使用下面這個方法
lname =
'doe'
person.objects.raw(
,[lname]
)
不使用raw()進行查詢
from django.db import connection
defmy_custom_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
如果要在查詢中包含文字百分號,則要使用兩個%
cursor.execute(
"select foo from bar where baz = '30%%' and id = %s",[
id])
在django中使用原生sql語句
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...
django中使用原生sql語句
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...
在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...