Django-数据库操作(四)

1、简介

  • Django提供了一套抽象的的API,让我们来对数据库进行CRUD(create, retrieve, update and delete objects)
  • 简化对数据库的操作

2、演练数据库相关操作

  • 可以使用shell

  #安装ipython

  pip install -i https://pypi.douban.com/simple  ipython

  python manage.py shell  -i  ipython

  #查看所有的项目

  Projects.objects.all()

3、CREATE

  • 使用模型内构造方法

  在视图中,对数据库的表进行操作:

    #创建数据
  
    #1、创建模型类对象

    one_obj = Projects(name='这是一个牛逼的项目', leader='icon', pubish_app='这是一个厉害的应用', programer='艳艳', tester='萧萧')
    #2、调用save方法保存
    one_obj.save()

 

  • Create
 #方法二:
    Projects.objects.create(name='这是一个牛逼的项目520', leader='icon', pubish_app='这是一个厉害的应用', 
                            programer='艳艳', tester='萧萧')

4、retrieve 

  • 获取一个数据表的所有记录
    • 返回所有记录组成的模型对象集合(queryset查询集)
Projects.objects.all()

QUerySet查询机相当于一个列表(存放所有项目对象的列表)

  • 获取指定记录
    • get   
one_poj = Projects.objects.get(id=1)

get方法只能返回一条记录,如果返回多条记录或者查询的记录不存在那么会抛出异常。

get方法的参数往往为主键或者唯一键。

    • filter

    获取某一些记录

  

   one_poj = Projects.objects.filter(id=1)
    # 使用特定的过滤方法
    one_poj = Projects.objects.filter(leader__contains='icon')
    one_poj = Projects.objects.filter(leader__icontains='icon')  # 忽略大小写
    # 外键字段__从表字段名__contains
    one_poj = Projects.objects.filter(interfaces__name='登录接口')  # 关联查询  
  
  # 如果给filter指定多个条件,那么条件之间是与的关系
  one_poj = Projects.objects.filter(leader='fumei', name__contains='fu') # 与关系查询
  # 或关系
  one_poj = Projects.objects.filter(Q(leader='fumei')|Q(name__contains='fu')) # 或查询
    • exclude

 反向查询,查询结果不包含id=1的记录   

one_poj = Projects.objects.exclude(id=1)

总结:

  1. 查询集相当于一个列表,支持列表的大多数操作(通过数字索引取值,切片,for)
  2. 查询集是对数据库操作的一种优化
  3. 查询集会缓存结果
  4. 惰性查询
  5. 查询集还支持链式操作
    one_poj = Projects.objects.filter(leader='fumei', name__contains='fu') 
    one_poj.filter(programer='app').first()

5、update

步骤:

  1. 先获取到要修改的模型对象
  2. 然后修改
  3. 保存
    one_poj = Projects.objects.get(id=1)
    one_poj.leader = 'sinder'
    one_poj.save()

6、delete

步骤:

  1. 获取要删除的模型对象
  2. 删除
  3. 保存
    qs = Projects.objects.filter(name__contains='fu')
    one_poj = qs.first()
    one_poj.delete()

 7、排序

    #从小到大排序
    qs = Projects.objects.filter(name__contains='fu').order_by('name')
    #从大到小排序
    qs = Projects.objects.filter(name__contains='fu').order_by('-name')

 

posted @ 2019-10-14 04:58  sinder2018  阅读(42)  评论(0)    收藏  举报