学习笔记,仅供参考
原生的数据库操作方法
使用raw进行查询操作
在django中,可以使用模型管理器的raw
方法来执行select语句进行数据查询
- 用法
Entry.objects.raw('sql语句')
- 返回值
QuerySet 集合对象
- 举个例子
在Django shell中敲入如下代码:
books = models.Book.objects.raw('select * from bookstore_book;')
for book in books:
print(book)
输出:
书名:Djangoweb开发实战, 出版社:清华大学出版社
书名:python, 出版社:机械工业出版社
书名:R, 出版社:人民邮电出版社
书名:数据处理, 出版社:清华大学出版社
书名:算法, 出版社:人民邮电出版社
书名:小黄, 出版社:黑山羊出版社
使用游标cursor进行增删改操作
在DJaogo中使用非查询语句(UPDATE、DELETE等)进行操作时,必须使用游标
- 使用步骤
- 导入cursor所在的包
- 创建cursor对象,为保证在出现异常时能释放cursor资源,通常使用with语句进行创建操作
- 举个例子
在Django shell中敲入如下代码:
from django.db import connection
#将黑山羊出版社的记录的书目改为大黄
with connection.cursor() as cur:
cur.execute('update bookstore_book set title="大黄" where pub="黑山羊出版社";')
#删除id=4的一条记录
with connection.cursor() as cur:
cur.execute('delete from bookstore_book where id=4;')
查看数据库:
mysql> select * from bookstore_book;
+----+-------------------+----------------+------------+-------+
| id | title | pub | exfacPrice | price |
+----+-------------------+----------------+------------+-------+
| 1 | Djangoweb开发实战 | 清华大学出版社 | 35.00 | 40.00 |
| 2 | python | 机械工业出版社 | 35.00 | 40.00 |
| 3 | R | 人民邮电出版社 | 35.00 | 40.00 |
| 5 | 算法 | 人民邮电出版社 | 45.00 | 30.00 |
| 6 | 大黄 | 黑山羊出版社 | 45.00 | 30.00 |
+----+-------------------+----------------+------------+-------+
5 rows in set (0.00 sec)