-
django的orm中如何查询id不等于5的元素?
Student.objects.filter().excute(id=5)//查询id不等于5的元素
-
使用Django中modelfilter条件过滤方法,把下边sql语句转化成python代码select*fromcompanywheretitle
like"%abc%"ormecount>999orderbycreatetimedesc;
#第一种 sorted(models.Company.objects.filter(num__gt=20)|models.Company.objects.filter(name__c ontains='小'),key=lambdax:x.time,reverse=False)
#第二种 from django.db.models import Q models.Company.objects.filter(Q(num__gt=20)|Q(name__contains='小')).order_by('-time')
-
如何给djangoCBV的函数设置添加装饰器?
from django.utils.decorators import method_decorator
①给方法加:
@method_decorator(check_login) defpost(self,request):
…
②给dispatch加:
@method_decorator(check_login) defdispatch(self,request,*args,**kwargs): ...
③给类加:
@method_decorator(check_login,name="get") @method_decorator(check_login,name="post") classHomeView(View): ...
-
django如何连接多个数据库并实现读写分离?
1.手动
model.object.using(‘指定数据库’).all()
2.自动
创建一个py文件,创建一个类,实现以下两个方法,函数名固定写法
classRouter:
defdb_for_read():
#读操作
return'slave'
defdb_for_write():
#写操作
return'default'
-
django中的F的作用?
操作数据表中的某列值
例(单个更新):
普通方式
例(多个更新):
reporter=Reporters.objects.get(name='Tintin')
reporter.stories_filed+=1#放到内存中,使用python计算,然后通过save方法保存
reporter.save()
使用F表达式(简单使用)
from django.db.models import F
reporter=Reporters.objects.get(name='Tintin')
reporter.stories_filed=F('stories_filed')+1
reporter.save()
虽然看上去和上面的内存Python操作相似,但事实上这是一个描述数据库操作的sql概念
当django遇到F()实例,它覆盖了标准的Python运算符创建一个封装的SQL表达式。在这个例子中,
reporter.stories_filed
就代表了一个指示数据库对该字段进行增量的命令。
无论reporter.stories_filed的值是或曾是什么,Python一无所知–这完全是由数据库去处理的。所有的
Python,通过Django的F()类,只是去创建SQL语法参考字段和描述操作
Reporter.objects.all().update(stories_filed=F('stories_filed')+1)
-
django中的Q的作用?
对对象进行复杂查询,并支持&(and)|(or)|(not)操作符
例:
from django.db.models import Q
from login.models import New #models对象
news=New.objects.filter(Q(question__startswith='What')) #例1
news=New.objects.filter(Q(question__startswith='Who')| Q(question__startswith='What')) #例2
news=New.objects.filter(Q(question__startswith='Who')|~Q(pub_date__year=2005)) #例3 ~表示取反
news=Poll.objects.get(Q(question__startswith='Who'),Q(pub_date=date(2005,5,2))| Q(pub_date=date(2005,5,6))) #例4
-
django中如何执行原生SQL?
①使用execute执行自定义的SQL
直接执行SQL语句(类似于pymysql的用法)
#更高灵活度的方式执行原生SQL语句 fromdjango.dbimportconnection cursor=connection.cursor() cursor.execute("SELECTDATE_FORMAT(create_time,'%Y-%m')FROMblog_article;")
ret=cursor.fetchall()
print(ret)
②使用extra方法:queryset.extra(select={"key":"原生的SQL语句"})
③使用raw方法
1.执行原始sql并返回模型
2.依赖model多用于查询
Django部分面试技术问题 part1
最新推荐文章于 2022-10-09 17:14:22 发布