Django(part30)--原生的数据库操作方法

学习笔记,仅供参考



原生的数据库操作方法


使用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)

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106885217