本文首发于公众号:Hunter后端原文链接:Django笔记二十八之数据库查询优化汇总这一篇笔记将从以下几个方面来介绍Django在查询过程中的一些优化操作,有一些是介绍如何获取Django查询转化的sql语句,有一些是理解QuerySet是如何获取数据的。以下是本篇笔记目录:性能方面使用标准的数据库优化技术理解QuerySet操作尽量在数据库中完成而不是在内存中使用唯一索引来查询单个对象如果知道需要什么数据,那么就立刻查出来不要查询你不需要的数据使用批量的方法1、性能方面1.connection.queries前面我们介绍过connection.queries的用法,比如我们执行了一条查询之
我对编码有些陌生,想用MySQL后端启动我的第一个Django应用程序。我已经在我的Windows机器上使用这个设置将近一年了,但它是一个继承的代码库——不幸的是,我从未尝试过从头开始构建一个新的应用程序。此外,我最近购买了一台二手MacBook来熟悉操作系统并更习惯使用Unix(因为我们所有的代码都从Ubuntu/RedHat服务器运行)——所以我仍在“寻找如何在城里四处走动”'阶段。以下是我遇到的一些困难/错误,以及对我有用的答案(不一定那么容易找到)。这不是“这就是你应该如何解决这个问题”,而只是我如何解决一些问题的存储库-希望了解我应该如何做到这一点。欢迎添加更多内容!更改默认
我的表在Python中指定为模型,然后由Django将其制成MySQL表。在Python中:classmy_table(models.Model):is_correct=models.IntegerField(default=0)如果我向该表中执行插入操作,那么我希望它自动为is_correct列插入0,除非我指定了不同的值。如果我使用原始sql或者如果我从MySQL存储过程插入,我也希望发生这种情况。default参数似乎只在Python中有效。它没有被翻译成MySQL看到的任何东西。这样的事情可能吗? 最佳答案 是的,defau
我正在使用一些非常简单的查询构建一个Django应用程序。当我在本地运行它时,性能很差:DebugToolbar报告4119.00ms(6queries)这显然很糟糕。运行时间最长的查询是这个:Djangoviews.py代码:reviews=list(Review.objects.select_related('band','record','label').order_by('-date_posted')[:12])输出的SQL:SELECT*FROM`reviews`INNERJOIN`bands`ON(`reviews`.`band_id`=`bands`.`id`)INNER
我有一个Django模型说,classStudent(models.Model):prefix=models.CharField(max_length=10,blank=True,null=True,)suffix=models.CharField(max_length=10,blank=True,null=True,)fullname=models.CharField(max_length=100,null=False,)fname=models.CharField(max_length=100,verbose_name=u'FirstName',blank=True,null=Tr
我正在尝试执行以下操作fromcore.modelsimport*q1=MessageRecipient.objects.filter(message__subject__icontains="Enfim")生成以下WHERE子句:WHERE`message`.`subject`LIKE%Enfim%看看like语句。Django没有使用引号。我在这里错过了什么吗?我打赌我是。因为这是一个常用的功能。如果这是一个错误,有人会意识到。发生了什么事? 最佳答案 如果您查看位于https://github.com/django/djang
我在Django中构建了一个简单的正常运行时间监控应用程序,用于检查网站是否未响应ping请求。它在“dt”列中存储被ping时的时间戳,在“ms”列中存储毫秒响应时间。该站点每分钟被ping一次,并将一个条目放入数据库中。Django模型如下所示:classUptime(models.Model):user=models.ForeignKey(User)dt=models.DateTimeField()ms=models.IntegerField()我想一次从dt列中抓取一天,并计算当天的ms响应时间的平均值。即使每天有1440个条目,我也想捕获这一天(例如4-19-2013)并获得
我正在尝试在hello.html上使用来自数据库查询的列表生成一个选择菜单。我的models.py:classhello(models.Model):q="""SELECT*FROMZONASWHEREcod_zona=1"""db.query(q)nome=db.query(q)title=models.CharField(max_length=3,choices=nome)def__unicode__(self):returnself.name和我的views.py:defcontato(request):form=hello()returnrender_to_response('
我有一个Django网络应用程序,目前正在使用SQLite进行测试,但现在想部署和使用MySQL,但我遇到了这个错误。我在使用pythonmanage.pysyncdb时遇到此错误:YoujustinstalledDjango'sauthsystem,whichmeansyoudon'thaveanysuperusersdefined.Wouldyouliketocreateonenow?(yes/no):noDatabaseError:(1406,"Datatoolongforcolumn'name'atrow4")并且在尝试使用此代码创建Store对象(模型之一)时:store_l
我想在我的Django单元测试中测试MySQLInnoDB全文搜索,例如:object__search='abc'但在单元测试中搜索失败。同样的搜索在Django代码中有效-它只是在单元测试中失败 最佳答案 MySQL全文索引仅在数据库提交后更新。我假设您正在使用创建事务但不提交的DjangoTestCase。相反,使用TransactionTestCase,或推出您自己的派生TestCase注意:TransactionTestCase在测试结束时从数据库中清除所有数据。 关于mysql