Django中使用模型类进行数据库操作

数据库的基本操作包括增删改查操作,即(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(...)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值