根据http://docs.djangoproject.com/en/dev/topics/db/sql/ 的描述
如果我们需要在Django中需要直接使用sql语句,那么很简单:
- def my_custom_sql():
- from django.db import connection, transaction
- cursor = connection.cursor()
- # Data modifying operation - commit required
- cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
- transaction.commit_unless_managed()
- # Data retrieval operation - no commit required
- cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
- row = cursor.fetchone()
- return row
对象django.db.connection代表默认的数据库连接,而django.db.transaction代表默认的数据库事务。通过调用connection.cursor()得到数据库游标对象--可以查询也可以做增删改操作。然后调用cursor.execute(sql, [params])执行sql语句,并且我们可以使用cursor.fetchone()获取一条记录,也可以使用cursor.fetchall()获取所有记录。如果执行的sql语句修改了数据库中的内容,那么可以调用transaction.commit_unless_managed()提交所作的修改,获取数据的操作则没有调用提交函数的必要。
https://blog.youkuaiyun.com/hjxzb/article/details/78711150