python
孤独王者¥
一个平平无奇的菜鸟程序员
展开
-
python 解压 .rar/.zip简述
一、解压rar 非Windows环境对.rar文件兼容不是很好,不建议使用,会出现奇奇怪怪的问题,如果一定要用,如下:1、安装rarfilepip install rarfile2、简单的例子import rarfileimport datetimepath = "../files/test.rar"path2 = "../files/"print(datetime.datetime.now())rf = rarfile.RarFile(path)pr...原创 2021-08-12 18:38:28 · 397 阅读 · 0 评论 -
python 中 websocket实现消息定时推送
一、socket服务端 websocket_util.pyimport socketimport base64import hashlibfrom threading import Threadimport structimport copyimport jsonimport timefrom XX.redis_db import RedisDbfrom utils.s...原创 2019-12-20 19:24:11 · 3165 阅读 · 0 评论 -
python列表推导式中的多层for循环if-else嵌套
一、列表推导式中的if-else:1、只有一个if [x for x in data if condition]2、只有一个if-else [exp1 if condition else exp2 for x in data]3、多层if-else a=['零' if i==0 else '三' if i==3 else '五' if i==5 else i for...原创 2019-11-04 14:56:04 · 8621 阅读 · 0 评论 -
python 中 pymysql拼接执行入参踩坑(%跟%%的区别)总结
一、对于不同类型的入参,有不同的占位符,但是用多了会发现,%s才是真理二、sql拼接可以用%s,也可以用format,如果不考虑sql注入风险问题,个人建议使用format,可以接受dict为入参进行匹配。三、在考虑sql注入风险的情况下,可以将拼接好的sql跟入参分开,调用cur.execute(sql, params)来规避sql注入风险。 需要注意的是,这里有两种使用方式,建议使...原创 2019-10-23 16:31:44 · 4367 阅读 · 2 评论 -
python中多进程、多线程、进程池和线程池、协程的简单理解举例
一、python中多进程、多线程、进程池和线程池、协程的简单理解举例:1、在python中由于GIL(全局解释器锁)的存在,同一个时刻只能有一个线程在一个cpu上运行,所有使用多线程的时候,利用不上cpu多核的性能, 所以,多线程适合使用在io密集型计算中,而且需要注意的是,只要多线程中有一个线程对cpu消耗大,那么整体的性能立马会大大下降。2、GIL的存在是python历史遗留的问...原创 2020-03-01 11:51:18 · 308 阅读 · 0 评论 -
python 判断字典是否存在某个key
很简单:直接用in判断:if "keyname" in args.keys():原创 2019-02-14 15:37:43 · 5134 阅读 · 1 评论 -
python 读取excel文件数据并插入数据库
import pandas as pdfrom sqlalchemy import create_engineexcelFile = '/data/user.xlsx'df = pd.DataFrame(pd.read_excel(excelFile))engine = create_engine("mysql+pymysql://test:123456@localhost:3306...原创 2019-08-20 11:47:29 · 2273 阅读 · 0 评论 -
python中 arg,*args,**kwargs的区别
arg指的是对应位置的参数*args 用来将参数打包成tuple元组给函数体调用**kwargs 用来将关键字参数打包成dict给函数体调用如下例子:def test(arg, *args, **kwargs): print(arg, args, kwargs)test('arg', 2, 3, 4, name='李四', age=18, hight='180cm'...原创 2019-08-24 17:55:13 · 877 阅读 · 0 评论 -
flask捕获@app.errorhandler/@app.after_request全局异常总结
在这个问题的探索过程中,看过很多人分享的文章,但是发现都只是简单的例子,没有结合到项目中,因此,大家都成功的方法,我放进项目里就不行了。经过查找,最终发现问题所在,在此总结记录分享一下,希望有所帮助。捕获处理全局异常的方法有两种:@app.errorhandler、@app.after_request1、第一种的使用,需要将flask的debug开关打开才能生效(自动捕获异常),在confi...原创 2019-08-27 16:36:11 · 4075 阅读 · 0 评论 -
python 中使用redis缓存解决接口返回慢的问题
1、背景:在实际的开发中,很多的接口一放到生产环境,由于数据量大,请求量大等等原因,有些接口从请求到数据返回耗时很长,非常影响用户的体验(接口一般要保证在1s内返回)。2、解决方法思路:(1)首先想到的当然是优化接口,提高接口性能。(2)但是,当接口优化还解决不了问题时,那么就要考虑第二种方法了,立马想到了缓存,首先想到的是redis,又考虑到redis是内存缓存,如果redis...原创 2019-08-28 17:39:37 · 994 阅读 · 0 评论 -
python 中 zip()函数的使用
将三个同样长度的列表转字典,如下:fee_dict = {i: {"this": j, "last": k} for i, j, k in zip(fee_name_list, this_fee_list, last_fee_list)}事实上,只要长度一样,无论几个列表都可以使用zip()函数来操作,很是方便...原创 2019-08-30 12:17:55 · 148 阅读 · 0 评论 -
python 获取当前方法名
import sysfunction_name = sys._getframe().f_code.co_name原创 2019-09-26 10:35:32 · 1053 阅读 · 0 评论 -
python 打包自己的模块并安装使用
1、创建一个你自己的包目录,如myPy将你需要打包的代码模块放到目录下,需要注意的是,打包的代码包一定要有__init__.py文件,python才能识别。结构如下:2、2、如上图:我需要打包的是excelUtil包里面的excel_util.py模块3、在myPy目录下创建一个README.md文件,这是模块用法介绍文件,可以留空4、接下来这一步最重要,在myPy目录下创建set...原创 2019-09-29 17:55:54 · 874 阅读 · 0 评论 -
python中pymysql执行sql的两种可防止sql注入漏洞的传参方式(1、元组/列表 2、dict字典)
1、采用sql拼接的方式,拼接时用 xx= %s的方式,入参格式为元组或者list如下举例:sql = "select count(*) as sys_num from test where true "params = []if param1: sql += " and param1 = %s " params.append(param1)if param2: ...原创 2019-10-11 15:46:10 · 584 阅读 · 0 评论 -
flask_apsscheduler的简单使用
1、app.__init__.pyfrom flask import Flaskfrom flask_apscheduler import APSchedulerimport config# 初始化appapp = Flask(config.APP)app.config.from_object('config')# # 初始化定时任务模块scheduler = APSche...原创 2019-08-23 19:11:40 · 1117 阅读 · 0 评论 -
python通过传参动态调用operator模块的比较方法
import operatorvalue_a = 2value_b = 3function_name = 'eq'func = getattr(operator, function_name)# dir(operator)获取的是一个属性、方法列表print(func(value_a, value_b))原创 2019-08-14 09:55:48 · 240 阅读 · 0 评论 -
python多层装饰器运行逻辑简单理解
# 装饰器一def check_permission_1(func): print(1) def deco1(*args, **kwargs): print(2) res = func(*args, **kwargs) print(3) return res print(4) return deco...原创 2019-08-01 12:23:32 · 214 阅读 · 0 评论 -
python动态调用类和函数的方法
from utils.parameter_model import ParameterModelfrom utils.cluster_model import ClusterModelfrom utils.server_model import ServerModelparameter_model = ParameterModel()cluster_model = ClusterMod...原创 2019-03-22 11:43:25 · 2437 阅读 · 0 评论 -
如何根据字典某个属性值分组一个字典类型的列表
废话不多说,直接上代码:第一种: 数据例子:serverList = [ { "clusterId":1, "redisId":2, "ip": "10.10.1.3" }, { "clusterId":1, "redisId":2, "ip": "10.1...原创 2019-03-12 17:22:07 · 821 阅读 · 0 评论 -
mysql 中in语句传参是字符串的用法FIND_IN_SET,可以解决平时经常出现的痛点
之前每次遇到这个问题,都觉得很恶心,因为直接串一个字符串进去,不做任何处理的话,是会被当成一个值,而不是按照‘,’分割,今天终于找到的方法,第一时间分享给大家,用法如下:select *from application_relation tarleft join cluster tc on FIND_IN_SET(tc.f_cluster_id , tar.f_cluster_id)...原创 2019-02-25 19:13:36 · 2078 阅读 · 0 评论 -
python 中的值传递和引用传递
python中的参数传递和java等其他语言实现有点区别,python中对象有两种,不可变对象(基本类型,int,string,布尔等),对于这一部分的对象作为参数传递时,是值传递,在函数里面值修改了,外面不影响;另外一种可变对象(字典,列表,集合),对于这样的对象作为参数传递时,是引用传递,在内部函数修改了值,外面的值也会变化。1、值传递,如:def add(a): a =...原创 2019-02-27 10:36:25 · 747 阅读 · 1 评论 -
python中pymysql使用in时候的传参方式
# 注意这里使用in时候传参的方式 {topic_list}这不用加引号,是因为里面需要的值 topic_id是intsql = "select f_topic_id, f_topic_name, f_partition_num, f_replicas_factor, f_cluster_id, f_topic_token, f_log_retention_time, f_created_at...原创 2019-02-01 19:09:44 · 4825 阅读 · 0 评论 -
python 如何动态传参调用类和方法
conf_name_dict = { "topic_model": topic_model, "consumer_model": consumer_model}conf_name = "topic_model"function_name = "add_topic"conf_data = conf_name_dict[conf_name].__getattribu...原创 2019-02-01 16:44:33 · 1319 阅读 · 0 评论 -
pymysql获取id
def sql_execute(self, sql): """ 执行sql :param sql: UPDATE语句, DELETE语句, INSERT语句 """ self._db_connect() last_id = -1 try: if self.conn and self.cur: self...原创 2019-01-31 15:48:10 · 885 阅读 · 0 评论 -
解决smtp发送中文名称附件乱码或者失败的问题
核心代码:my_att = MIMEText(open(file_full_path, 'rb').read(), 'base64', 'utf-8')my_att['Content-Type'] = 'application/octet-stream'my_att.add_header('Content-Disposition', 'attachment', filename=('gbk...原创 2018-12-12 17:30:02 · 4469 阅读 · 5 评论 -
bootstrap fileinput插件使用
第一步:必然是下载并导入路径。我是通过csdn资源用积分下载的,如果有谁要可以留言,给你分享资源。第二步:引用 css,js文件,路径改成你自己的相对路径<!--上传附件插件--><script type="text/javascript" src="../bootstrap-fileinput/js/fileinput.min.js"></script&...原创 2018-11-20 17:49:26 · 191 阅读 · 0 评论 -
python中 for 循环的另一种写法,分享下
test = [str(i) + ':' + str(123) for i in range(5)]print(test)结果为:['0:123', '1:123', '2:123', '3:123', '4:123']原创 2019-04-25 20:22:04 · 3394 阅读 · 0 评论 -
python 获取两个List的交集,并集
cluster_id_list = list(set(cluster_id_list_one).intersection(set(cluster_id_list_two)))fee_distribute['x'] = list(set(dev_name_list) | set(opt_name_list) | set(asset_fee_x_list))原创 2019-05-05 19:30:02 · 598 阅读 · 0 评论 -
通过python的内置函数:局部变量locals()、全局变量globals() 来动态创建变量
1、locals()可以返回命名空间下局部变量的dict2、globals() 返回全局变量的dict都是内置的函数,大家可以根据具体的需要使用,这里,可以通过这两个函数来动态创建变量names = globals()names['xxx'] = 'xxxx'test = names['xxxx']print(test)如此一来,就可以通过调用固定的test,来引用到动态创...原创 2019-07-22 11:07:19 · 580 阅读 · 0 评论 -
python 字典列表按照某元素进行排序
from operator import itemgetter# 字典列表按照不同字段排序def data_sort(self, data_list, sort_key, sort_status): try: if data_listand sort_key in data_list[0].keys(): for sys_data i...原创 2019-07-29 18:50:44 · 1004 阅读 · 0 评论 -
python实现简单的分页函数
def page_helper(my_list, current_page=1, page_size=10): start = (current_page - 1) * page_size end = start + page_size return {'rows': my_list[start:end], 'total': len(my_list)}原创 2019-07-18 17:13:20 · 972 阅读 · 0 评论 -
linux 搭建python虚拟环境
查看linux版本 ,不同版本编译的虚拟环境不能公用cat /etc/issuecat /etc/redhat-release一、linux python安装1、安装依赖yum install -y libffi libffi-devel2、下载最新的python tar.gz包tar -xzvf xxx.tar.gzcd xxx./configure --prefix=/...原创 2019-07-11 09:49:13 · 238 阅读 · 0 评论 -
python orm模块sqlalchemy的简单使用(增删改查)
from sqlalchemy import Column, String, create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.dialects.mysql import TEXT, INTEGE...原创 2019-07-03 14:58:32 · 431 阅读 · 0 评论 -
python中json.dumps()、json.loads()和json.dump()、json.load()的区别
json.dumps()、json.loads()用来对JSON数据编码和解码json.dump()、json.load()用来对json文件做编码和解码如下:import jsondata = { 'name': 'weo', 'age': 14}print("源数据:")print(data)data = json.dumps(data)prin...原创 2019-07-08 17:30:40 · 185 阅读 · 0 评论 -
flask装饰器的使用,带返回值并传递视图函数使用
1、在蓝图__init__.py中添加装饰器函数,这里需要注意的是,装饰器需定义在api初始化之前"""App蓝图"""from flask import Blueprint, requestfrom flask_restful import Api# 初始化蓝图blue = Blueprint('blue', __name__)api = Api(blue)#...原创 2019-06-26 13:06:36 · 1588 阅读 · 0 评论 -
python 定时任务简单实现
BlockingScheduler:main_loop就在当前进程的主线程内运行,所以调用start函数后会阻塞当前线程。通过一个threading.Event条件变量对象完成scheduler的定时唤醒。 BackgroundScheduler:和BlockingScheduler基本一样,除了main_loop放在了单独线程里,所以调用start后主线程不会阻塞1、interval 间隔调...原创 2019-05-29 19:25:58 · 371 阅读 · 0 评论 -
使用 flask_restful 的reqparse获取验证前端参数(自定义参数校验类型)
废话不多说,直接看下面:required是设置必选非必选,nullable允不允许向传null,location指定参数获取的位置,可以多选,按前后顺序获取parser.add_argument('app_id', type=zero_int, required=True, nullable=False, location=['json'])parser.add_argument('use...原创 2018-11-20 17:23:42 · 9549 阅读 · 0 评论