数据库的基本操作包括增删改查操作,即(CRUD操作),CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)
管理器对象
每个继承自 models.Model 的模型类,都会有一个 objects 对象被同样继承下来。这个对象叫管理器对象
数据库的增删改查可以通过模型的管理器实现
class MyModel(models.Model):
...
MyModel.objects.create(...) # objects 是管理器对象
创建记录
Django 使用一种直观的方式把数据库表中的数据表示成Python 对象。
创建数据中每一条记录就是创建一个数据对象。
-
MyModel.objects.create(属性1=值1, 属性2=值1,...)
成功: 返回创建好的实体对象
失败: 抛出异常 -
创建 MyModel 实例对象,并调用
save()
进行保存obj = MyModel(属性=值,属性=值) obj.属性=值 obj.save() 无返回值,保存成功后,obj会被重新赋值
删除记录
删除记录是指删除数据库中的一条或多条记录
删除单个MyModel对象或删除一个查询结果集(QuerySet)中的全部对象都是调用 delete()
方法
-
删除
单个对象
先查找查询结果对应的一个数据对象
再调用这个数据对象的delete()
方法实现删除try: # 获取一条记录,没有或者多条都会报错 auth = Author.objects.get(id=1) auth.delete() except: print(删除失败)
-
删除
查询结果集
先查找查询结果集中满足条件的全部QuerySet
查询集合对象
再调用查询集合对象的delete()
方法实现删除# 删除全部作者中,年龄大于65的全部信息 auths = Author.objects.filter(age__gt=65) auths.delete()
修改记录
-
修改
单个
实体的某些字段值的步骤:
先通过get()
得到要修改的实体对象
再通过 对象.属性 的方式修改数据
最后通过 对象.save()
保存数据from bookstore import models abook = models.Book.objects.get(id=10) abook.market_price = "10.5" abook.save()
-
通过
QuerySet
批量修改对应的全部字段
直接调用QuerySet的update(属性=值)
实现批量修改# 将 id大于3的所有图书价格定为0元 books = Book.objects.filter(id__gt=3) books.update(price=0) # 将所有书的零售价定为100元 books = Book.objects.all() books.update(market_price=100)
查询记录
数据库的查询需要使用管理器对象进行
通过 MyModel.objects
管理器方法调用查询接口
方法 | 说明 |
---|---|
all() | 查询全部记录,返回QuerySet查询对象 |
get() | 查询符合条件的单一记录 |
filter() | 查询符合条件的多条记录 |
exclude() | 查询符合条件之外的全部记录 |
… |
-
all()
方法
[用法]:MyModel.objects.all()
[作用]: 查询MyModel实体中所有的数据,等同于select * from tabel
[返回值]:QuerySet
容器对象,内部存放MyModel
实例from bookstore import models books = models.Book.objects.all() for book in books: print("书名", book.title, '出版社:', book.pub)
-
values()
查询 方法:values('列1', '列2')
[用法]:MyModel.objects.values(...)