Performing raw SQL queries in Django (Part I)
Như các bạn đã biết, Django cung cấp sẵn một bộ API (QuerySet) cho phép thực hiện các thao tác CRUD. Các bạn có thể tham khảo ở đây: A Survey On QuerySet In Django (Part I) A Survey On QuerySet In Django (Part II) Bộ API này đơn giản hóa việc thao tác với data trong Django. Cú pháp đơn ...
Như các bạn đã biết, Django cung cấp sẵn một bộ API (QuerySet) cho phép thực hiện các thao tác CRUD.
Các bạn có thể tham khảo ở đây:
- A Survey On QuerySet In Django (Part I)
- A Survey On QuerySet In Django (Part II)
Bộ API này đơn giản hóa việc thao tác với data trong Django. Cú pháp đơn giản là điểm mạnh của bộ API này. Nhưng một khi câu query quá phức tạp hoặc khó viết với QuerySet, chúng ta cần sử dụng đến các câu query SQL thuần.
Trong bài viết này, tôi sẽ đề cập đến việc thao tác với database bằng các câu lệnh SQL thuần.
Có hai cách để thực hiện các câu query SQL thuần trong Django. Thứ nhất là sử dụng Manager.raw() để thực hiện các câu query và trả về các instance. Thứ hai, chúng ta sẽ dùng các câu lệnh SQL một cách trực tiếp. Ở cách thứ hai, chúng ta tránh được việc sử dụng lớp model (model layer).
1. Manager.raw(raw_query, params=None, translations=None)
Method manager raw() có thể được sử dụng để thực hiện các câu query SQL thuần mà ở đó, giá trị trả về là các instance.
Method này nhận câu query SQL làm tham số đầu vào. Sau khi xử lý, nó trả về một instance django.db.models.query.RawQuerySet. Instance này có thể được lặp giống như với một QuerySet thông thường.
Tốt nhất là chúng ta nên có một ví dụ để minh họa