1. 程式人生 > >Django 中直接使用sql語句 操作資料庫

Django 中直接使用sql語句 操作資料庫

在django中要直接使用sql操作資料庫,官方提供了兩種方式
1、使用 Manager.raw(raw_query, params=None, translations=None)
使用方法:
先看模型models.py

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

然後看views檢視函式

#可以使用一個列表將所有的queryset物件裝起來,方便使用序列化器進行分頁、標準化返回等操作
objs = [] for p in Person.objects.raw('SELECT * FROM myapp_person'): print(p) objs.append(p) #支援序列化操作 serializer = PersonSerializer(objs,many=True)

2、使用 Executing custom SQL directly

from django.db import connection

def my_custom_sql(self):
    with connection.cursor() as cursor:
        #執行sql語句
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() #查出所有資料 #row = cursor.fetchall() return row

官方解釋:
with connection.cursor() as c:
c.execute(…)
相當於:

c = connection.cursor()
try:
c.execute(…)
finally:
c.close()