• python django对数据表的增删改查操作


    新增操作:
    方式1:
    book = BookInfo(title='西游记',price=99)
    book.save()

    方式2:
    BookInfo.objects.create(title='西游记',price=99)

    方式3:
    BookInfo.objects.bulk_create(bookinfoList)


    修改操作:
    方式1:
    book = BookInfo.objects.get(id=1)
    book.name='西游记'
    book.save()

    方式2:
    BookInfo.objects.filter(name='西游记').update(name='三国演义')


    删除操作:
    方式1:
    BookInfo.objects.get(id=1).delete()

    方式2:
    BookInfo.objects.filter(id=1).delete()


    查询操作:
    BookInfo.objects.all()查询所有结果 QuerySet
    BookInfo.objects.count()查询该表数据量

    过滤查询
    book = BookInfo.objects.get(id=1)查询id为1的一条数据 book--QuerySet book.title
    BookInfo.objects.filter(title__exact='西游记') 简写为(title='西游记')
    BookInfo.objects.filter(title__contains='游')
    BookInfo.objects.filter(title__startswith/endswith = '西') 以指定值开头或结尾
    以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith

    BookInfo.objects.filter(title__isnull=False)
    BookInfo.objects.filter(id__in=[1,2,4])

    BookInfo.objects.filter(id__gt=3)
    gt :大于 (greater then)
    gte :大于等于 (greater then equal)
    lt :小于 (less then)
    lte :小于等于 (less then equal)

    BookInfo.objects.exclude(id=3)

    year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算
    BookInfo.objects.filter(pub_data__year=1993)
    BookInfo.objects.filter(pub_data__gt=date(1990,1,1))

    查询阅读量大于等于2倍评论量的图书
    BookInfo.objects.filter(read_gte=F('comment')*2)

    查询阅读量大于20,并且编号小于3的图书
    BookInfo.objects.filter(read_gt=20,id__lt=3)

    Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或
    查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现,Q对象前可以使用~操作符,表示非not
    BookInfo.objects.filter(Q(read_gt=20) | Q(pk__lt=3))


    使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg(平均),Count(数量),Max(最大),Min(最小),Sum(求和),被定义在django.db.models中,aggregate的返回值是一个字典类型
    BookInfo.objects.aggregate(Sum('read'))

    排序
    BookInfo.objects.all().order_by('read')
    BookInfo.objects.all().order_by('-read')降序

    分组查询
    User.objects.values('is_active').annotate(total=Count('id')) values分组的依据 annotate查询的内容


    关联查询
    一对多:
    book = BookInfo.objects.get(id=1)
    herio = book.herioinfo_set.all()

    多对一
    herio = Herioinfo.objects.get(id=1)
    book = herio.book
    id = book_id

    关联过滤查询
    由多模型类条件查询一模型类数据
    BookInfo.objects.filter(heroinfo__name='孙悟空')

    由一模型类条件查询多模型类数据:
    Herioinfo.objects.filter(book__read__gte=30)

    查询集 QuerySet 对查询集可以再次调用过滤器进行过滤
    all():返回所有数据。
    filter():返回满足条件的数据。
    exclude():返回满足条件之外的数据。
    order_by():对结果进行排序。

    创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
    使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数

    生命很短,请让生活更精彩一些!
  • 相关阅读:
    Android 从零搭建简单MVP Demo
    Ubuntu 16.04 安装wine QQ
    Android 根据字符串动态获取资源ID
    Android 个推 踩坑小结
    Android Studio 查看手机CPU信息
    J2EE 项目本地发布路径及修改
    Cucumber 安装
    [译] 第三十天:Play Framework
    [译] 第二十九天:Yeoman Chrom Generator
    [译] 第二十八天:Java开发者的OpenShift Eclipse 集成
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/15425052.html
Copyright © 2020-2023  润新知