我正在从 PHP 切换到 Django/Python,到目前为止我不太喜欢 Django 的一件事是 ORM。插入新行的时候还好,但是当我想选择更具体的东西时,我发现ORM比纯SQL更麻烦,特别是因为我已经很了解SQL了。
那么,我可以在 Django 中编写纯 SQL,还是必须使用 ORM?
如果可能的话,非常欢迎提供有关如何在 Django 中使用 SQL 的示例。
请您参考如下方法:
是的!你可以。
https://docs.djangoproject.com/en/1.7/topics/db/sql/
来自 Django 的精彩文档;
有两种方式;
使用管理器方法
raw()https://docs.djangoproject.com/en/1.7/topics/db/sql/#performing-raw-queries
class Person(models.Model): first_name = models.CharField(...) last_name = models.CharField(...) birth_date = models.DateField(...)然后您可以像这样执行自定义 SQL:
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'): ... print(p) John Smith Jane Jones使用下面的方法传递参数。
>>> lname = 'Doe' >>> Person.objects.raw('SELECT * FROM myapp_person WHERE last_name = %s', [lname])直接执行自定义 SQL。
https://docs.djangoproject.com/en/1.7/topics/db/sql/#executing-custom-sql-directly
from django.db import connection def my_custom_sql(self): cursor = connection.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
