在Django中对数据的增删改查

1.增加数据

    1.Entry.objects.creat(属性=值,属性=值)
        返回值:
            插入成功:则返回创建好的实体对象
            插入失败:则返回None

    2.创建一个save的对象,并通过save()进行保存
      obj = Entry(属性=值,属性=值)
      obj.属性 = 值
      obj.save()
      无返回值,保存成功后,obj会重新赋值
    3.通过字典创建Entry对象,并通过save()进行保存

        dic= {
        "属性1":"值一"
        "属性2":"值二"
        }
        obj = Entry(**dic)
        obj.save() 

2.查询数据(重点)

    通过Entry.objects调用查询接口函数
    Entry.objects.all()
    Entry.objects提供了该实体的所有的数据的查询
    所有的接口函数都可以通过一个query属性来得到所对应的sql语句
        Entry.objects.all().query
        1.获取所有查询结果的方法
            方法:all()
            用法:Entry.object.all()
            返回:QuerySet(查询结果集,本质是一个封装了若干对象的列表)

            SELECT `index_author`.`id`, `index_author`.`name`, `index_author`.`age`, `index_author`.`email`, `index_author`.`isActive` FROM `index_author`


            <QuerySet [<Author: Author object>, <Author: Author object>, <Author: Author object>, 
            <Author: Author object>]>
        2.查询返回指定列
            方法:values() | values('列名1','列名2')
            作用:查询表中数据的部分列,封装到字典中,在封装到QuerySet中
            返回:QuerySet(查询结果集,本质就是一个封装了若干字典的列表
        3.查询返回指定列
            方法:

            _list()
            作用:将数据封装到元组中再封装到列表中
        4.排序方法
            方法:order_by()
            语法:Entry.objects.order_by('列1',"列2")
                默认是升序排序,列名前加一个-,表示降序排序
        5.查询只返回一条数据
            方法:get(条件)
            注意:
                该方法只适用于只能查询出一条结果的场合
                如果查询多余一条数据或没有查询出结果都会抛出结果
            返回单个实体
        6.根据条件查询部分行
            方法:filter(条件)
            ex:
                1.查询Author实体中id = 1 的信息
                    author = Author.objects.filter(id=1)
                非等值条件查询使用查询谓词Filed Lookups
                语法:Entry.objects.filter(属性__查询谓词 = 值)
                注意:
                    1.每个查询谓词都是一个独立的功能条件
                        __exact:等值条件判断
                        __gt:大于条件判断
                        __year:得到日期中的年份再进行进一步判断
                        __contains:模糊查询'%xxx%'
                        __range:模糊查询 between and
                        ... ...
                    2.所有支持条件查询的位置处都支持查询谓词
                        filter(),get(),exclude()

        7.对条件取反
            方法:exclude(条件)
            ex:
                Author.objects.exclude(id=1)
                select * from index_author where not(id=1)

        8.聚合查询(不带分组)
            方法:aggregate(列明= 聚合函数('列'))
            ex:
                Author.objects.aggregate(sumAge=Sum'age'))

            聚合函数:
                1.Avg():平均值
                2.Count():数量
                3.Sum():求和
                4.Min():求最小值
                5.Max():求最大值
        9.聚合查询(带分组)
            方法:annotate(名=聚合函数('列'))
            ex:
                按id分组查询平均年龄
                Author.object.values('id').annotate(avgAge=Avg('age')).all()


        集合where,分组查询,having于一体的查询接口
        Author.objects
        .filter(id__gte=3) where子句
        .values('isActive') group by

3.修改数据

    1.修改单个实体
        1.查
            通过get()查询出要修改的实体
        2.改
            通过实体对象的属性值
        3.保存
            通过实体对象的save()方法保存数据库

    2.批量修改数据
        调用QuerySet的Update(属性=值,属性=值)实现批量修改

4.删除数据

    调用实体对象/查询结果集的delete() 完成删除
    1.删除单个对象
        au = Author.objects.get(id=1)
        au.delete()
    2.批量删除
        aulist = Author.objects.all()
        aulist.delete

猜你喜欢

转载自blog.csdn.net/zhangshuaijun123/article/details/84260318