想做一个签到服务号能打卡签到系统,要能自动定位,有什么好用的工具?

的model效率不是很高,特别是在做大量的数据库操作的时候,如果你只用django来开企业站或者外包项目的话,那可以小跳过下,而你恰巧是效率狂或者说是对程序的效率要求比较高的话,那就要注意下面的几个方法。1. count()方法:我们想用count方法来获取记录的条数可以采用下面的方法:num = info.objects.filter('...').count()我们来看下django model模块里面count方法是怎么写的?def count(self):"""Performs a SELECT COUNT() and returns the number of records as aninteger.If the QuerySet is already fully cached this simply returns the lengthof the cached results set to avoid multiple SELECT COUNT(*) calls."""if self._result_cache is not None and not self._iter:return len(self._result_cache)return self.query.get_count(using=self.db)从上面的看来,djang model的count()要执行SELECT COUNT()语句,其实是查询了下数据库,这样如果记录比较多的情况下,查询数据库的效率还是比较低的.我的建议是:直接用len()来查看记录集的长度。比如上面的写法我们可以用len()方法来修改。info = info.objects.filter('...')num = len(info)2多用切片比如我们要查询数据的话,如果你的数据量比较大的情况下,你没有限定要查询的范围,对系统的开销会非常的大,比如你要分页的显示新闻数据,那你就要按照一页要显示多少数据,就读取多少数据,而不是一次起把数据全部给读出来,然后再根据限定的条件来显示的数据。比如你要显示前10条的新闻的话按照下面的方法来做:news = News.objects.all()[1:10]而不是:news = News.objects.all()news = news[1:10]因为news = News.objects.all()news = news[1:10]你是把数据库里的数据全部给读出来,这样效率不是很高。上面说的这几点是提高django model效率的几个小方法,希望大家平时在用django开发项目的时候要注意一些效率方面的东西。下面关于django model的一篇文章:原创文章请注明转载自,本文地址:作者:老王@&老王python,提供pythn相关的django 教程和python 下载,希望大家能够喜欢!
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如下面代码,会根据实例ID获取实例对象,大家知道get的时候如果id不存在会出现异常,但是filter不会。那么,请问大家,像类似这种情况是用get然后处理异常要好呢,还是filter来做好呢,哪种更规范?
def get_city_image(self, instance):
if instance.city_id:
city_image = City.objects.get(id=instance.city_id).image.url
# city_image = City.objects.filter(id=instance.city_id).last().image.url
except Exception, e:
city_image = None
city_image = None
return city_image
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用filter.first 效率是一样的,并且不会抛异常
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App网站/网络(6)
django的get和filter方法是django model常用到的,搞清楚两者的区别非常重要。
为了说明它们两者的区别定义2个models
class Student(models.Model):
name = models.CharField('姓名', max_length=20, default='')
age = models.CharField('年龄', max_length=20, default='')
class Book(models.Model):
student = models.ForeignKey(Student)
一.先说下django的get方法:
1django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用student = Student.objects.get(name=’老王python’),
返回的是一个记录对象,你可以通过student . _ _ dict _ _来查看,它返回的是一个字典的形式,{’key’:valeus},key是字段的名称,而values是值的内容。
而如果我用get方法来查询一个数据库里不存在的记录,程序会报错。
比如:student = Student.objects.get(name='老王'),你自己可以运行看下。
2如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错。
比如我的student表里有一个记录:
d name age
1 python 24
id student_id
student = Student.objects.get(name='python')
book = Book.objects.get(student)
它也会报错,因为book表有2条记录和student表相匹配。
二.再说下django filter:
1django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
比如我数据库里有一条记录,记录的name的值是老王python的话,我用
student = Student.objects.filter(name='老王python')
它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。
2如果你用django的get去取得关联表的数据的话,无论关联表有多少记录的都不会报错。
django 除了model比较强大的话,表单和模板也很强大.
另外我从别的资料里看到filter好像有缓存数据的功能,第一次查询数据库并生成缓存,下次再调用filter方法的话,直接取得缓存的数据,会get方法每次执行都是直接查询数据库的,不知道这个是不是正确。
这是我用了一段时间django的一点心得体会,希望对大家了解django get和filter有帮助!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
(1)(11)(1)(13)(23)(19)(3)(2)(11)(16)(43)(25)(1)(13)(17)(17)(38)(44)(2)(1)(1)(8)(11)(3)

我要回帖

更多关于 指纹打卡机怎么补签到 的文章

 

随机推荐