嘻哈飞车族|Django之ORM表高级操作、增删改查、F/Q查询等


嘻哈飞车族|Django之ORM表高级操作、增删改查、F/Q查询等目录

  • 一、如何开启自己的测试脚本?
  • 二、对表数据的添加、更新、删除1.create()变态操作之批量插入数据2.update()3.delete()4.如何查看QuerySet对象执行的sql语句?5.如何配置文件自动查看sql语句?
  • 三、 单表查询13个操作返回QuerySet对象的方法有:1.all() 查询所有结果2.filter() 条件匹配3.exclude() 取反4.order_by() 排序5.reverse() 反转6.distinct() 去重特殊的QuerySet:7.values() 获取指定字段对 列表套字典8.values_list() 获取指定字段对** 列表套字典 列表套元组返回具体对象的:9.get 直接获取对象 , 不存在就报错10.first() 取第一个元素对象11.last() 取最后一个元素对象返回布尔值的方法有:12.exists()返回数字的方法有:13.count() 统计数据条数
  • 四、神奇的双下线跨表查询
  • 五、外键字段的增删改查1.一对多2.多对多1.绑定关系 add2.移除绑定关系 remove3.修改绑定关系 set4.清空关系
  • 六、跨表查询1.基于对象的跨表查询(子查询):2.基于双下划线跨表查询(链表查询)3.聚合查询4.分组查询5.F查询6.Q查询7.Q的高阶用法

一、如何开启自己的测试脚本?如何只单独测试django中的某一个py文件 如何书写测试脚本在任意一个py文件中书写以下代码应用下的tests或者自己新建一个import os if __name__ == "__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings")import djangodjango.setup()
嘻哈飞车族|Django之ORM表高级操作、增删改查、F/Q查询等这样就可以直接运行你的test.py文件来运行测试
嘻哈飞车族|Django之ORM表高级操作、增删改查、F/Q查询等
二、对表数据的添加、更新、删除1.create()# 添加2.update()# 更新3.delete()# 删除1.create()# 对电影表添加一条数据# create()返回值就是当前被创建数据的对象本身models.Movie.objects.create(title='西游记',price=999.23,publish_time='2016-1-1') # 还可以直接传日期对象from datetime import datectime = date.today()models.Movie.objects.create(title='西游记', price=666.23, publish_time=ctime)变态操作之批量插入数据方式一:
走1000从数据库 , 非常的慢
def ab_bc(request):# 插入1000条件数据for i in range(1,1001):models.Book.objects.create(title='第%s本书'%i)方式二:调用bulk_create()方法
插入10000条数据 , 走一次数据库
def ab_bc(request): book_list = []for i in range(1,10001):book_list.append(models.Book(title='新的%s书'%i))models.Book.objects.bulk_create(book_list)# 批量插入数据的方式2.update()# update()更新数据返回值是受影响的行数res = models.Movie.objects.filter(pk=1).update(title='玉女心经')print(res)# 1受影响的条数3.delete()# delete()删除数据返回值(1, {'app01.Movie': 1})受影响的表及行数res = models.Movie.objects.filter(pk=3).delete()print(res)# (1, {'app01.Movie': 1})4.如何查看QuerySet对象执行的sql语句?res = models.Movie.objects.filter(pk=3).delete()print(res.query)# 获取res的sql执行语句