有用的知识点整理
时间的相互转化
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
读取json文件
file = open(r"F:\new_gm_project\Secdeer\vuln_types.json", encoding='utf-8') data = json.load(file) records = data.get('RECORDS', [])
正则匹配
tags = "{missing_update,CVE-2003-0192,CVE-2003-0253,CVE-2003-0254,CWE-20}" rule = re.compile('CVE-\d{4}-\d{4}') ret = rule.findall(tags)
去除html标签
import re pattern = re.compile(r'<[^>]+>',re.S) result = pattern.sub('', t) print(result) pattern = re.compile(r'&....') recommendation = pattern.sub('', recommendation) pattern = re.compile(r'\(.*?\)') recommendation = pattern.sub('', recommendation) pattern = re.compile(r'\#') recommendation = pattern.sub('', recommendation)
I can feel you forgetting me。。 有一种默契叫做我不理你,你就不理我