在django中使用sql語句查詢

2021-09-22 12:57:13 字數 1427 閱讀 5328

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...