数据库:

  1. def page_q(request):
  2. """Q函数的使用"""
  3. #查询username和nickname都是zhangsan
  4. user_list = WeiboUser.objects.filter(username='zhangsan')
  5. user2_list = WeiboUser.objects.filter(nickname='zhangsan')
  6. print(user_list)
  7. print(user2_list)
  8.  
  9. # OR |
  10. name = request.GET.get('name',None)#通过URL进行参数得传递,默认无
  11. query = Q(username=name) | Q(nickname=name)
  12. user_listQ = WeiboUser.objects.filter(query)
  13. print(user_listQ)
  14.  
  15. print('SSSSSSSSSSSSSSSSSSSSSSS')
  16. # AND &
  17. #查询名字和昵称是某某得用户
  18. #username 按用户名查血
  19. username = request.GET.get('username',None)
  20. # nickname 按昵称擦化学
  21. nickname = request.GET.get('nickname',None)
  22. query = Q()#避免下面不进入if语句里面
  23. if username is not None:
  24. query = query & Q(username=username)
  25. if nickname is not None:
  26. query = query & Q(nickname=nickname)
  27.  
  28. user_list_q2 = WeiboUser.objects.filter(query)
  29. print(user_list_q2.count())
  30.  
  31. return HttpResponse('dddd')
  1. URL
  2. http://127.0.0.1:8000/weibo/Q/?nickname=zhangsan
  3.  
  4. 结果为
  5. [08/May/2020 22:32:41] "GET /weibo/Q/?username=zhangsan HTTP/1.1" 200 4
  6. 1
  7. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:zhangsan pk:4,nickname:qq>]>
  8. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:duser1 pk:9,nickname:zhangsan>, <WeiboUser: User:duser2 pk:10,nickname:zhangsan>]>
  9. <QuerySet []>
  10. SSSSSSSSSSSSSSSSSSSSSSS
  11. 3
  12. [08/M
  1. URL
  2. http://127.0.0.1:8000/weibo/Q/?username=zhangsan
  3.  
  4. 结果:
  5. [08/May/2020 22:32:57] "GET /weibo/Q/?nickname=zhangsan HTTP/1.1" 200 4
  6. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:zhangsan pk:4,nickname:qq>]>
  7. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:duser1 pk:9,nickname:zhangsan>, <WeiboUser: User:duser2 pk:10,nickname:zhangsan>]>
  8. <QuerySet []>
  9. SSSSSSSSSSSSSSSSSSSSSSS
  10. 2
  1. URL
  2. http://127.0.0.1:8000/weibo/Q/?name=zhangsan
  3.  
  4. 结果:
  5. [08/May/2020 22:38:22] "GET /weibo/Q/?username=zhangsan HTTP/1.1" 200 4
  6. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:zhangsan pk:4,nickname:qq>]>
  7. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:duser1 pk:9,nickname:zhangsan>, <WeiboUser: User:duser2 pk:10,nickname:zhangsan>]>
  8. <QuerySet [<WeiboUser: User:zhangsan pk:3,nickname:zhangsan>, <WeiboUser: User:zhangsan pk:4,nickname:qq>, <WeiboUser: User:duser1 pk:9,nickname:zhangsan>, <WeiboUser: User:duser2 pk:10,nickname:zhangsan>]>
  9. SSSSSSSSSSSSSSSSSSSSSSS
  10. 106
  11.  
  12. 由于这里没有传入username nickname所以查询为没条件,所以全部得数据都查询出来了

  1. import threading
  2.  
  3. from django.db.models import F
  4.  
  5. from weibo.models import WeiboUser
  6.  
  7. class ChangeThread(threading.Thread):
  8. """改变用户的状态"""
  9. def __init__(self,max_count=100,*args,**kwargs):
  10. super().__init__(*args,**kwargs)
  11. self.max_count = max_count
  12.  
  13. def run(self):
  14. count = 0
  15. user = WeiboUser.objects.get(pk=2)
  16. while True:
  17. if count >= self.max_count:
  18. break
  19. print(self.getName(),count)
  20. # user.status+=1
  21. user.status = F('status') + 1
  22. #F函数表示每次操作都要去数据库查询出数据进行炒作
  23. user.save()
  24. count +=1
  25.  
  26. def main():
  27. t1 = ChangeThread(max_count=800)
  28. t2 = ChangeThread(max_count=500)
  29. t1.start()
  30. t2.start()
  31. t1.join()
  32. t2.join()

python-django-自定义查询Q函数和F函数的更多相关文章

  1. python django 自定义 装饰器

    # -*-coding:utf-8-*- __author__ = "GILANG (pleasurelong@foxmail.com)" """ d ...

  2. Python 散列表查询_进入<哈希函数>为结界的世界

    1. 前言 哈希表或称为散列表,是一种常见的.使用频率非常高的数据存储方案. 哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行 API 定制,对于大部分高级语言而言,都会提供已经实现好 ...

  3. Django自定义查询对象

    在Django中,objects对象类继承于models.Manager 1.声明 EntryManager 类,继承自 models.Manager 允许在 EntryManager中增加自定义函数 ...

  4. Python - Django - 自定义一个中间件

    中间件简介: 中间件是在 wsgi.py 之后,urls.py 之前,在全局操作 Django 请求和响应的模块 在 settings.py 中可以看到中间件的相关配置 该列表中的每一个元素都是一个类 ...

  5. Python - Django - ORM 查询方法

    models.py: from django.db import models class Human(models.Model): id = models.AutoField(primary_key ...

  6. ORM之自关联、add、set方法、聚合函数、F、Q查询和事务

    一.外键自关联(一对多) 1.建表 # 评论表 class Comment(models.Model): id = models.AutoField(primary_key=True) content ...

  7. django系列5.5--分组查询,聚合查询,F查询,Q查询,脚本中调用django环境

    一.聚合查询 aggregate(*args, **args) 先引入需要的包,再使用聚合查询 #计算所有图书的平均价格 from django.db.models import Avg Book.o ...

  8. Python学习---ORM查询之基于对象的正向/反向/聚合/分组/Q/F查询

    ORM查询之基于对象的正向查询与反向查询 对象形式的查询 # 正向查询 ret1=models.Book.objects.first() print(ret1.title) print(ret1.pr ...

  9. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

随机推荐

  1. [no_code][Alpha]项目展示博客

    $( "#cnblogs_post_body" ).catalog() 团队项目链接 github 后端 github OCR文档-含部分所需测试代码目前private API调用 ...

  2. BUAA SE 个人项目作业

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人项目作业 我在这个课程的目标是 通过个人项目实践熟悉个人开发流程 一.在文章开头给出教学班级和 ...

  3. 难搞的C语言指针你搞懂了多少

    C语言指针说难不难但是说容易又是最容易出错的地方,因此不管是你要做什么只要用到C指针你就跳不过,今天咱们就以 十九个例子来给大家简单的分析一下指针的应用,最后会有C语言视频资料提供给大家更加深入的参考 ...

  4. 两个栈实现队列 牛客网 剑指Offer

    两个栈实现队列 牛客网 剑指Offer 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. class Solution: def __init__(sel ...

  5. clone-graph leetcode C++

    Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors. OJ's un ...

  6. Python matplotlib 概率论与数理统计 伯努利分布 二项分布

    Python 代码实现 二项分布 import numpy as np import matplotlib.pyplot as plt import math from scipy import st ...

  7. CF398A Cards | 贪心

    题目链接 我怎么连这种题都做得那么艰难-- 可以发现一些结论,然后枚举'x'被分成几段就好了. 我真的越来越菜 #include<iostream> #include<cstdio& ...

  8. 计算机网络漫谈之IP数据包

    网络层从 网络层 .IP与子网掩码 前前后后我们也说了两次了,IP 这个东西絮絮叨叨的也一直在提.今天我们来解开IP协议的面纱,还记得我们之前在数据链路层说的物理帧的结构吗?就是这样: 其中Head叫 ...

  9. robot_framewok自动化测试--(7)认识RIDE

    认识 RIDE RIDE 作为 Robot Framework 的"脸面",虽然我们已经可以拿它来创建和运行测试了,但我们对它的认识并不全面,这一小节我们将了解这个工具的使用. 1 ...

  10. JMeter学习笔记--并发登录测试

    账号密码读取文件 1.设置线程数为30,并发用户量就是30个用户同时登录 2.添加同步定时器 添加 Synchronizing Timer 同步定时器,为了阻塞线程,当线程数达到指定数量,再同时释放, ...