1. 基本操作
  1.      # 增
  2. #
  3. # models.Tb1.objects.create(c1='xx', c2='oo') 增加一条数据,可以接受字典类型数据 **kwargs
  4.  
  5. # obj = models.Tb1(c1='xx', c2='oo')
  6. # obj.save()
  7.  
  8. # 查
  9. #
  10. # models.Tb1.objects.get(id=123) # 获取单条数据,不存在则报错(不建议)
  11. # models.Tb1.objects.all() # 获取全部
  12. # models.Tb1.objects.filter(name='seven') # 获取指定条件的数据
  13. # models.Tb1.objects.exclude(name='seven') # 获取指定条件的数据
  14.  
  15. # 删
  16. #
  17. # models.Tb1.objects.filter(name='seven').delete() # 删除指定条件的数据
  18.  
  19. # 改
  20. # models.Tb1.objects.filter(name='seven').update(gender='0') # 将指定条件的数据更新,均支持 **kwargs
  21. # obj = models.Tb1.objects.get(id=1)
  22. # obj.c1 = '111'
  23. # obj.save()
  1. 进阶操作
  1. # 获取个数
  2. #
  3. # models.Tb1.objects.filter(name='seven').count()
  4.  
  5. # 大于,小于
  6. #
  7. # models.Tb1.objects.filter(id__gt=1) # 获取id大于1的值
  8. # models.Tb1.objects.filter(id__gte=1) # 获取id大于等于1的值
  9. # models.Tb1.objects.filter(id__lt=10) # 获取id小于10的值
  10. # models.Tb1.objects.filter(id__lte=10) # 获取id小于10的值
  11. # models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
  12.  
  13. # in
  14. #
  15. # models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
  16. # models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
  17.  
  18. # isnull
  19. # Entry.objects.filter(pub_date__isnull=True)
  20.  
  21. # contains(类似于数据库中like的语法)
  22. #
  23. # models.Tb1.objects.filter(name__contains="ven")
  24. # models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
  25. # models.Tb1.objects.exclude(name__icontains="ven")
  26.  
  27. # range
  28. #
  29. # models.Tb1.objects.filter(id__range=[1, 2]) # 范围bettwen and
  30.  
  31. # 其他类似
  32. # 以什么开始,以什么结束,和上面一样带i的是大小写不敏感
  33. # startswith,istartswith, endswith, iendswith,
  34.  
  35. # order by
  36. # 排序
  37. # models.Tb1.objects.filter(name='seven').order_by('id') # asc
  38. # models.Tb1.objects.filter(name='seven').order_by('-id') # desc
  39.  
  40. # group by
  41. #
  42. # from django.db.models import Count, Min, Max, Sum
  43. # models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))
  44. # SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"
  45.  
  46. # limit 、offset
  47. #
  48. # models.Tb1.objects.all()[10:20]
  49.  
  50. # regex正则匹配,iregex 不区分大小写
  51. #
  52. # Entry.objects.get(title__regex=r'^(An?|The) +')
  53. # Entry.objects.get(title__iregex=r'^(an?|the) +')
  54.  
  55. # date
  56. #
  57. # Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))
  58. # Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))
  59.  
  60. # year
  61. #
  62. # Entry.objects.filter(pub_date__year=2005)
  63. # Entry.objects.filter(pub_date__year__gte=2005)
  64.  
  65. # month
  66. #
  67. # Entry.objects.filter(pub_date__month=12)
  68. # Entry.objects.filter(pub_date__month__gte=6)
  69.  
  70. # day
  71. #
  72. # Entry.objects.filter(pub_date__day=3)
  73. # Entry.objects.filter(pub_date__day__gte=3)
  74.  
  75. # week_day
  76. #
  77. # Entry.objects.filter(pub_date__week_day=2)
  78. # Entry.objects.filter(pub_date__week_day__gte=2)
  79.  
  80. # hour
  81. #
  82. # Event.objects.filter(timestamp__hour=23)
  83. # Event.objects.filter(time__hour=5)
  84. # Event.objects.filter(timestamp__hour__gte=12)
  85.  
  86. # minute
  87. #
  88. # Event.objects.filter(timestamp__minute=29)
  89. # Event.objects.filter(time__minute=46)
  90. # Event.objects.filter(timestamp__minute__gte=29)
  91.  
  92. # second
  93. #
  94. # Event.objects.filter(timestamp__second=31)
  95. # Event.objects.filter(time__second=2)
  96. # Event.objects.filter(timestamp__second__gte=31)
  1.  

  

  1.  
  1. 高级操作
  1. # extra
  2. #
  3. # extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
  4. # Entry.objects.extra(select={'new_id': "select col from sometable where othercol > %s"}, select_params=(1,))
  5. # Entry.objects.extra(where=['headline=%s'], params=['Lennon'])
  6. # Entry.objects.extra(where=["foo='a' OR bar = 'a'", "baz = 'a'"])
  7. # Entry.objects.extra(select={'new_id': "select id from tb where id > %s"}, select_params=(1,), order_by=['-nid'])
  8.  
  9. # F
  10. #
  11. # from django.db.models import F
  12. # models.Tb1.objects.update(num=F('num')+1)
  13.  
  14. # Q
  15. #
  16. # 方式一:
  17. # Q(nid__gt=10)
  18. # Q(nid=8) | Q(nid__gt=10)
  19. # Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption='root')
  20.  
  21. # 方式二:
  22. # con = Q()
  23. # q1 = Q()
  24. # q1.connector = 'OR'
  25. # q1.children.append(('id', 1))
  26. # q1.children.append(('id', 10))
  27. # q1.children.append(('id', 9))
  28. # q2 = Q()
  29. # q2.connector = 'OR'
  30. # q2.children.append(('c1', 1))
  31. # q2.children.append(('c1', 10))
  32. # q2.children.append(('c1', 9))
  33. # con.add(q1, 'AND')
  34. # con.add(q2, 'AND')
  35. #
  36. # models.Tb1.objects.filter(con)
  37.  
  38. # 执行原生SQL
  39. #
  40. # from django.db import connection, connections
  41. # cursor = connection.cursor() # cursor = connections['default'].cursor()
  42. # cursor.execute("""SELECT * from auth_user where id = %s""", [1])
  43. # row = cursor.fetchone()

 

1:__exact 精确等于 like 'aaa'
 2:__iexact 精确等于 忽略大小写 ilike 'aaa'
 3:__contains 包含 like '%aaa%'
 4:__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
 5:__gt 大于
 6:__gte 大于等于
 7:__lt 小于
 8:__lte 小于等于
 9:__in 存在于一个list范围内
10:__startswith 以...开头
11:__istartswith 以...开头 忽略大小写
12:__endswith 以...结尾
13:__iendswith 以...结尾,忽略大小写
14:__range 在...范围内
15:__year 日期字段的年份
16:__month 日期字段的月份
17:__day 日期字段的日
18:__isnull=True/False

 

模糊查询

第一种:

# query = models.Host.objects.filter(Q(name__contains=q) | Q(ip__contains=q))

第二种:

from django.db.models import Q

q = request.GET.get('q')
query_list = ['name', 'ip']
_q = Q()
_q.connector = 'OR'
for i in query_list:
  _q.children.append(Q(('{}__contains'.format(i), q)))

query = models.Host.objects.filter(_q)

  1.  

Django 数据库进阶操作的更多相关文章

  1. Django 数据库常见操作

    首先要配置数据映射具体在这个连接里 https://www.cnblogs.com/Niuxingyu/p/10296143.html Django 建立数据库模型 #导包导入django数据库类 f ...

  2. Django数据库相关操作

    首先,在settings.py中加入应用的名称,让数据库知道使用的是哪个应用,然后给那个应用创建表. 在settings.py中配置数据库相关参数,默认使用sqlite3不用配置 编辑models.p ...

  3. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

  4. Django中的ORM进阶操作

    Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. ...

  5. Django之Models进阶操作(字段属性)

    字段属性详细介绍 一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列, ...

  6. django 通过orm操作数据库

    Django Model 每一个Django Model都继承自django.db.models.Model 在Model当中每一个属性attribute都代表一个database field 通过D ...

  7. Django 之models进阶操作

    到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 ...

  8. Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作

    Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...

  9. web框架-(七)Django补充---models进阶操作及modelform操作

    通过之前的课程我们可以对于Django的models进行简单的操作,今天了解下进阶操作和modelform: 1. Models进阶操作 1.1 字段操作 AutoField(Field) - int ...

随机推荐

  1. redis弱密码漏洞利用

    背景: redis无认证,或者弱密码,可以成功连接到redis服务器 反弹shell拿到的权限取决于redis的启动账号 操作: 1. Centos7安装redis客户端 #yum install r ...

  2. eclipse中安装Activiti插件

    由于公司网络问题,不能在线安装,下载到本地的插件,安装也是各种问题,后面终于找到能安装的插件包 1.下载eclipse activiti插件包 链接:https://pan.baidu.com/s/1 ...

  3. DEC-UPDATE

    12/19-12/26 # -*- coding: utf-8 -*- import sys ans = [1,2,3,4,5,6] def operate(fun): a = ans[0] b = ...

  4. Tableau Sheet中的操作

    如果想要给数据排名,例如给饼图中的数据排名 1 创建一个Rank 描述为INDEX()的测度 2.将RANK用Label形式显示并且编辑计算方法选择特定的属性. 属性本身也有可以快速计算的一些方式. ...

  5. 多线程-生产者消费者(synchronized同步)

    正解博客:https://blog.csdn.net/u011863767/article/details/59731447 永远在循环(loop)里调用 wait 和 notify,不是在 If 语 ...

  6. jquery $(".classc",$(".classp"))的含义

    jquery中有一种选择器的写法为:$(".classc",$(".classp")),注意,是$()中又嵌套了一个$(),这种写法的作用类似于$(" ...

  7. std::setw(size)与std::setfill(char)

    头文件:#include <iostream>#include <iomanip>using namespace std; 功能:  std::setw :需要填充多少个字符, ...

  8. centos 修改时区以及修正时间

    1.查看系统当前的时区 [app@127-0-0-1 shine]$ timedatectl Local time: Wed 2019-10-23 17:56:17 CST Universal tim ...

  9. idea 导入(非maven)web项目并发布到tomcat服务器

    IDEA 2017.1版本 web项目导入并发布到Tomcat服务器 1.点击编辑项目结构 2.点击project 将项目编译输出目录改成{项目目录}/OUT,并设置项目环境,编译版本 3.点击mod ...

  10. TTTTTTTTTTTTTTTTTTTTT POJ 3690 0与* 二维哈希 模板 +multiset

    Constellations Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 5923   Accepted: 1164 De ...