有用的知识点整理 运行:   /usr/local/bin/redis-check-aof --fix appendonly.aof

时间的相互转化

from dateutil.relativedelta import relativedelta
from  datetime import *
import  time

t = int(str(date.today()).split("-")[1])-3     #现在的日期与3月相差几个月

today = date.today()   #  打印年月日

today_time = int(str((time.mktime(today.timetuple()))).split(".")[0])   #今天凌晨的时间戳

time_local = time.localtime(today_time)
#转换成新的时间格式(2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)     #时间戳转化为时间格式,字符串
o_time = datetime.strptime(dt,"%Y-%m-%d %H:%M:%S")-relativedelta(months=t)
#字符串时间转化为时间格式   并回到三月份
now = datetime.now()-relativedelta(months=t)

print("today",today,)
print("today_time",today_time)
print(t)
print('o_time',o_time,type(o_time))

print(now,type(now))

  

today 2019-05-09
today_time 1557331200
2
o_time 2019-03-09 00:00:00 <class 'datetime.datetime'>
2019-03-09 09:40:39.927366 <class 'datetime.datetime'>

 

Django ORM中打印sql语句

fws = FaultWarning.objects.filter(type='ERROR',create_time__gt=st_time,create_time__lt=now)

  print(fws.query)

data = FaultWarningSerializer(fw, many=True, context={"request": request}).data

  

 计算百分比保留一位小数

data_dic[_] = (new_dic.get(_), '{:.1f}'.format(((new_dic.get(_)) / count) * 100) + '%')

  

 weater_system_count_per = '{:.1f}%'.format((weater_system_count / total_count) * 100)
 wind_system_count_per = '{:.1f}%'.format((wind_system_count / total_count) * 100)

  

 数据库更新时间

sql1 = 'UPDATE bms_rule_faultwarning set create_time = ADDTIME (date("{0}") + interval 0 hour,time(create_time)),update_time = ADDTIME (date("{0}") + interval 0 hour,time(update_time))WHERE create_time like "{1}%"'.format('2019-02-13','2019-04-13')

  

 字典根据value排序

dic = {"name1":1,"name100":4,"name200":3,"name23":0}
new_dic = dict(sorted(dic.items(), key=lambda d: d[1], reverse=True))
print(new_dic)


{'name100': 4, 'name200': 3, 'name1': 1, 'name23': 0}

sorted函数按key值对字典排序 

dic = {"name":'alex',"age":18,"name1":"xiao,ming","name2":'wq'}
t = sorted(dic.keys(),reverse=True)   #倒序
print(t)


['name2', 'name1', 'name', 'age']

sorted函数按value值对字典排序

 要对字典的value排序则需要用到key参数,在这里主要提供一种使用lambda表达式的方法,如下:

dic = {"name":'alex',"age":"18","name1":"xiao,ming","name2":'wq'}
t = sorted(dic.items(),key=lambda item:item[1],reverse=True)   #倒序
print(t)

这里的d.items()实际上是将dic转换为可迭代对象('name1', 'xiao,ming'), ('name2', 'wq'), ('name', 'alex'), ('age', '18'),items()方法将字典的元素 转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数(如果写作key=lambda item:item[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。lambda x:y中x表示输出参数,y表示lambda 函数的返回值),所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。

字典根据键排序

d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
new_d = {}
for k in sorted(d, reverse=True):
    new_d[k] = d[k]
print(new_d)

  

 关于distinct()去重

真正的做法是这样的,如果用mysql 的话,distinct() 里面不要任何参数,参数应该写在 value 中去,类似如下方式:

if __name__ == "__main__":
    a = Category.objects.values('parentcode','email').distinct()
    for obj in a:
        print obj

这表示按照 parentcode,email 组合去除重复的内容.
如果是这样:

if __name__ == "__main__":
    a = Category.objects.values('parentcode').distinct()
    for obj in a:
        print obj

就表示按照 parentcode 去除重复的内容。  

ClassName.objects.values('name').distinct() .order_by('name')

 时间自动添加

 created_at = models.DateTimeField(auto_now_add=True)
 updated_at = models.DateTimeField(auto_now=True)

  Django创建APP

  在每个django项目中可以包含多个APP,相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。

  所有的APP共享项目资源。

  在pycharm下方的terminal终端中输入命令:

  python manage.py startapp cmdb

  这样就创建了一个叫做cmdb的APP,django自动生成“cmdb”文件夹。

 递归实现斐波那契数列

def  fbnq(n):
    if  n==1 or  n==2:
        return  1
    return fbnq(n-1)+fbnq(n-2)

y = fbnq(7)
print(y)

  

 记一次redis容器无法启动问题

有用的知识点整理
运行:   /usr/local/bin/redis-check-aof --fix appendonly.aof