python-django-自定义查询Q函数和F函数
阅读原文时间:2023年07月08日阅读:4

数据库:

def page_q(request):
"""Q函数的使用"""
#查询username和nickname都是zhangsan
user_list = WeiboUser.objects.filter(username='zhangsan')
user2_list = WeiboUser.objects.filter(nickname='zhangsan')
print(user_list)
print(user2_list)

# OR |  
name = request.GET.get('name',None)#通过URL进行参数得传递,默认无  
query = Q(username=name) | Q(nickname=name)  
user\_listQ = WeiboUser.objects.filter(query)  
print(user\_listQ)

print('SSSSSSSSSSSSSSSSSSSSSSS')  
# AND &  
#查询名字和昵称是某某得用户  
#username 按用户名查血  
username = request.GET.get('username',None)  
# nickname 按昵称擦化学  
nickname = request.GET.get('nickname',None)  
query = Q()#避免下面不进入if语句里面  
if username is not None:  
    query = query & Q(username=username)  
if nickname is not None:  
    query = query & Q(nickname=nickname)

user\_list\_q2 = WeiboUser.objects.filter(query)  
print(user\_list\_q2.count())

return HttpResponse('dddd')

URL:
http://127.0.0.1:8000/weibo/Q/?nickname=zhangsan

结果为
[08/May/2020 22:32:41] "GET /weibo/Q/?username=zhangsan HTTP/1.1" 200 4
1
, ]>
, , ]>

SSSSSSSSSSSSSSSSSSSSSSS
3
[08/M

URL
http://127.0.0.1:8000/weibo/Q/?username=zhangsan

结果:
[08/May/2020 22:32:57] "GET /weibo/Q/?nickname=zhangsan HTTP/1.1" 200 4
, ]>
, , ]>

SSSSSSSSSSSSSSSSSSSSSSS
2

URL:
http://127.0.0.1:8000/weibo/Q/?name=zhangsan

结果:
[08/May/2020 22:38:22] "GET /weibo/Q/?username=zhangsan HTTP/1.1" 200 4
, ]>
, , ]>
, , , ]>
SSSSSSSSSSSSSSSSSSSSSSS
106

由于这里没有传入username 和nickname所以查询为没条件,所以全部得数据都查询出来了

import threading

from django.db.models import F

from weibo.models import WeiboUser

class ChangeThread(threading.Thread):
"""改变用户的状态"""
def __init__(self,max_count=100,*args,**kwargs):
super().__init__(*args,**kwargs)
self.max_count = max_count

def run(self):  
    count = 0  
    user = WeiboUser.objects.get(pk=2)  
    while True:  
        if count >= self.max\_count:  
            break  
        print(self.getName(),count)  
        # user.status+=1  
        user.status = F('status') + 1  
        #F函数表示每次操作都要去数据库查询出数据进行炒作  
        user.save()  
        count +=1

def main():
t1 = ChangeThread(max_count=800)
t2 = ChangeThread(max_count=500)
t1.start()
t2.start()
t1.join()
t2.join()

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章