Django 中直接使用sql語句 操作資料庫
阿新 • • 發佈:2019-02-07
在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()