一、MySQL
1、mysql数据类型varchar,给长度20能存储20个中文汉字或英文字符串(中英文空格也占一位)
二、Django
ORM
1、select_related()
1、select_related 主要针对一对一和多对一关系进行优化
2、select_related 使用SQL的JOIN语句进行优化,减少数据库的访问次数
3、select_related 可以查找外键的字段,可以查找外键的外键。没有指定的字段不会缓存,没有指定的深度不会缓存
4、select_related 可以通过depth指定递归的深度,即外键的深度,会自动缓存指定深度内的所有字段
5、接受无参数的select_related(),django会尽可能的递归到最深。但会有递归限制、也会浪费性能
2、aggregate()
1、是聚合函数,支持聚合操作 Avg、MAx、Min、Sum等。
例:Student.objects.aggregate(Sum("age"), Avg("age"), Max("age"))
返回数据格式为字典
3、annotate()
1、是分组的意思,即group_by
例: Student.objects.annotate(Count('hobbies'))
根据学生分组再统计每个学生的爱好数量,返回的是QuerySet
2、values(‘age’).annotate() 是根据名字分组,再聚合
annotate().values(‘age’) 是聚合后取有用的字段
三、celery
1、在django中指定定时任务延期执行
T.apply_async((arg,), {‘kwarg’: value}, countdown=60, expires=120)
countdown是指定等待时间,expires是最长等待时间
2、celery异步任务中传递的参数必须可以json化