自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 flask分片上传文件

flask文件分片上传

2022-10-13 17:04:50 654 1

原创 flask 流式下载文件 流式响应

flask实现流式下载文件

2022-10-13 16:58:13 1123

原创 python设计模式之抽象工厂

python 设计模式之抽象工厂

2022-07-01 13:55:45 321

原创 解决python jsonify日期数据小8小时的时区问题

flask.jsonify在调用dumps后,如果数据里有日期类型的, 就会把时间减去8小时,从UTC转换成GMT,为了解决这个问题, 就重写了json.JSONEncoder的default方法, 直接将date类型的数据转换成字符串即可,然后在序列化的时候, 指明序列化类名就可以了class CommonJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, decimal.Decim

2022-05-25 16:25:16 969 1

原创 解决 python 定时任务重复触发

最近在flask项目中写了个定时任务,用的gunicorn服务器, worker_class设置为1, 这样的话, master进程就会fork出1个子进程,导致定时任务被触发2次,为了解决这个问题,写了个装饰器,具体代码如下:def lock_file(func): """保证同一时刻 只有一个任务执行""" def inner(*args, **kwargs): f = open("single_scheduler.lock", "wb") try:

2022-05-10 20:50:17 1411

原创 容器之间通信

背景由于业务需求,后端服务要拆分为2个有上下游关系的服务,也算是顺应了微服务的潮流,今天分享一下如何将2个docker容器通信。方案第一步: 创建自定义网络第二步:通过docker-compose 部署相关服务具体步骤创建自定义网络,命令:docker network create --driver bridge network_name (network_name 可以自定义,但是需要和yaml文件里的networks的值保持一致)创建docker-compose.yaml文件,并根据实际

2021-11-03 10:49:57 315

原创 mysql常用日期处理函数

返回当前的日期和时间 SELECT NOW() FROM tablename --> 2021-08-12 06:42:11返回当前的日期 SELECT CURDATE() FROM address --> 2021-08-12返回当前的时间 SELECT CURTIME() FROM address --> 06:50:04提取日期或日期/时间表达式的日期部分 select date(ds) FROM tablename--> 2021提取年份、月

2021-08-12 16:21:35 278

原创 python mro super

这里写自定义目录标题mro super 初体验类的定义总结mro super 初体验python mro 方法可以获取到一个类的调用顺序super方法用来调用父类的相关方法类的定义class Displayer(object): def display(self, message): print("into Displayer display") # 3 print(self) # 4 print(message) # 5

2021-05-31 16:21:46 106

原创 flask_migrate案例

flask通过orm模型初始化数据表, 有时业务需求的调整可能会涉及到数据表结构的调整, 这时就可以用flask的migrate来实现.迁移脚本如下:# scripty.pyfrom dataclasses import dataclassfrom flask_sqlalchemy import SQLAlchemyfrom sqlalchemy.ext.declarative import declarative_basefrom flask import Flaskfrom flas

2021-01-19 18:16:30 136

原创 ERROR: rpc error: code = Unknown desc = error getting credentials - err: exec: “docker-credential-de

docker build 时遇到这个异常, 解决方案:在〜/ .docker / config.json中, 将credsStore更改为credStore

2020-12-21 15:44:43 4077 1

原创 bash: docker: command not found

配置环境变量, 我的是windows下的docker, 具体的配置如下:

2020-12-21 15:09:08 2368

原创 exec: “com.docker.cli“: executable file not found in %PATH%

我的解决方案: 通过docker的setting 将 Enable cloud experience 的功能 关闭即可

2020-12-21 15:05:25 2453 1

原创 mysql数据类型转换(字符串和整型)

背景: 项目需要将用户信息展示在页面上, 但是用户信息的其中一个标签值是长整形, 但是浏览器对long型超出的部分转换为0, 导致数据展示不准确,所以需要后端将数据类型做下处理我想到的处理方案有2种, 一种是: 查询mysql时, 进行类型转换, 另外一种是: 数据查询出后, 利用pandas进行指定列的类型转换,由于其中含有日期类型的字段, 利用pandas转换后 日期类型会变化, 还需要再次转换, 所以就选择了第一个方案.所以这篇文章就简单记录下mysql数据类型转换的知识点利用..

2020-11-24 19:48:20 3301

原创 mysql数据迁移(mysqldump) (跨库)

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.数据备份1. 进入到你按照的mysql所在路径: eg: E:\mysql-5.7.25-winx64\bin>2. 执行mysqldump命令将数据库db1的数据导出到 db1.sql 文件中 :mysqldump -h 域名或IP -P 端口号 -u 用户名 -p密码 --databases db1 >db1.sq..

2020-11-22 14:53:47 881 2

原创 mysql 将datetime.date 类型的数据转换为str

背景:项目中对mysql的查询结果进行了缓存, 本来表中ds字段的类型是date,存入redis后再读取出来, 类型是str, 后续的逻辑中由于类型不一致导致返回的数据不一致, 所以就需要将从mysql中读出的ds类型直接转换为str, 这样的话, 后续的处理就不会出错了旧的SQL:SELECT ds FROM table_name转换SQL:SELECT date_format(ds, '%Y-%m-%d')ds FROM table_name利用date_format 函数 将 d...

2020-10-22 11:34:28 1938

原创 pymysql设置查询超时时间

pymysql是Python连接和操作mysql的模块, 在项目中, 有一个需求, 就是设置查询的超时时间, 一旦超过预设的时间, 需要抛出超时的异常信息, 然后我就去看了源码.0.7.2 版本的pymysql的Connection的参数是这样的:参数中有连接超时的配置型, 但是没有查询超时的配置信息,到pymysql官网上查了下, 发现读数据超时, 写数据超时 的配置项都有,意识到是我的版本太out了, 然后更新了pymysql的依赖版本为0.9.3,在初始化连接时, 加上..

2020-09-27 17:13:06 5015

原创 redis 常用命令

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) ,有序集合(sorted sets) 和 HyperLogLog等类型本文主要总结一下redis不...

2019-08-09 10:17:40 197

原创 Python 命令行传参 和接收参数

一, 使用argparse模块> cat test.pyimport argparseparser = argparse.ArgumentParser()parser.add_argument('--name', dest='name', help='姓名')parser.add_argument('--gender', dest='gender', help='性别')...

2019-08-05 20:59:49 1035

原创 Pythonflask 接收文件参数 获取文件内容

后端接收参数和读取文件内容的代码:params_file = request.files['action']dst = os.path.join(os.path.dirname(__file__), params_file.name)params_file.save(dst)with open(dst, 'r') as file: cont = file.read()os.re...

2019-08-02 16:45:11 7156

原创 Python 代码计算2个坐标之间的距离

import mathipt = input('请输入x1,y1,x2,y2,以逗号隔开:')data = ipt.split(',')data = [int(x) for x in data]result = math.sqrt( math.pow( data[0] - data[2], 2) + math.pow( ...

2019-07-23 20:59:50 28863

原创 Python 日期类型转换

从数据库中查询出的日期格式是:Fri 12 Jul 2019 00:00:00 GMT需要转换成: 2019-07-12d= 'Fri 12 Jul 2019 00:00:00 GMT'GMT_FORMAT = '%a %d %b %Y %H:%M:%S GMT'date1 = datetime.datetime.strptime(d, GMT_FORMAT)print(date...

2019-07-18 19:59:02 260

原创 docker 架构 镜像 容器 命令

docker是一种虚拟化技术, 虚拟化技术从实现形式上分为基于硬件的虚拟化和基于软件的虚拟化, 而docker是基于软件的虚拟化中的一种---操作系统层虚拟化.镜像是一堆执行dockerfile中的命令后的只读层, 每一层只读层也可称为镜像层, 通过统一文件系统(union file system)技术将不同的制度层整合为一个文件系统,保存在自己的主机, 如下图:容器是在镜像的...

2019-06-27 21:13:28 138

原创 Python GMT格式的日期 转化为 年月日类型

背景:从数据库中读取的数据datetime.datetime类型 返回给前端含有""GMT"", 前端显示如下:"Sun, 05 May 2019 00:00:00 GMT",只需要:datetime.datetime.strftime(GMT_TIME, "%Y-%m-%d %H:%M:%S")即可如果是含有GMT的时间是字符串类型, 则:import ...

2019-06-18 20:13:25 2893

原创 redis 订阅发布的实现

订阅发布模式很好的做到解耦的目的.自己写了一个简单的案例.下面是执行结果:

2019-03-14 21:05:52 125

原创 celery的简单使用和遇到的坑

一. celery简介Celery 是一个基于消息传递、 处理大量消息的分布式系统, 简单、灵活且可靠。与单纯的消息队列相比较,队列中传递的消息为任务(Task/Job)信息,而不是数据类信息,Celery 本身不是任务队列, 是管理分布式任务队列的工具. 它封装了操作常见任务队列的各种操作, 我们使用它可以快速进行任务队列的使用与管理, 专注于实时处理的任务队列,同时也支持任务调度, 其可...

2019-03-07 17:28:18 10596 7

原创 celery Redis 启动celery时,报 from . import async, base SyntaxError: invalid syntax

在使用celery时遇到一个问题, 将backend设置为Redis时, 启动celery报下图的异常:查了资料后了解到是因为celery依赖中的async模块和Python的关键字async存在冲突, 所以在导入时报错,我的解决方案是: 将celery中的async改个名字, 比如: async_2, 需要将celery依赖中所有的 async 都改为 async_2, 一定要保证一...

2019-03-01 10:32:27 1265 1

原创 Python flask 联合唯一索引的创建和删除

如何在flask项目中的模型类中配置联合唯一索引给模型类添加联合唯一索引注: __table_args__ 的值必须是元组, 否则会报异常如果项目在不断完善, 不断丰富的过程中 发现不需要联合唯一索引了,但是数据库中的数据也保存了很多, 不可能重新生成数据表, 可以通过SQL语句删除唯一索引:ALTER TABLE `table_name` DROP INDEX `colum...

2019-02-20 15:53:00 2809 3

原创 Python日志文件的回滚模块RotatingFileHandler.日志文件大小,日志文件数量

from logging.handlers import RotatingFileHandlerfh = RotatingFileHandler(filename, maxBytes=1024, backupCount=5)filename: 自定义日志文件的路径以及文件名, 假定文件名是: error.logmaxBytes: 配置日志文件大小的上限, 单位是字节backu...

2019-01-16 17:18:51 7379

原创 Python日志:自定义输出字段 json格式输出

最近有一个需求:将日志以json格式输出, 并且有些字段是logging模块没有的.看了很多源码和资料, 终于搞定, 抽取精华分享出来, 一起成长.import jsonimport loggingclass JsonFilter(logging.Filter): ip = 'IP' source = 'APP' def filter(self, reco...

2019-01-15 19:57:41 3182 1

原创 ImportError: cannot import name 'logger' 循环导入

今天遇到一个错误:分析了一下, 发现是循环导入所致,解决: 将util文件中的12行的导入放到了调用的上一行, 也就是在导入exce时,选择了'import this name locally' ...

2019-01-03 21:04:20 10055

原创 "exception":"com.alibaba.fastjson.JSONException","message":"error parse false",

post请求方式去调用别人的api时, 报了这个错, 状态码是500, 本以为是请求体中的每个参数的类型有问题, 就把封装好的参数中的每一个数据以及数据的类型都打印了出来, 对比后,和对方需要的是一致的, 没有任何问题,以下是错误的代码:params = { "xxx": x, "yyy": y, "zzz": z}requests.post(url, head...

2018-12-29 11:24:48 10020

原创 获取原生SQL语句查询结果中包含的数据条数

SQL= 'select * from tableName where id = xxx' ,result = session.execute(SQL)打印查询结果result, 是一个对象:  <sqlalchemy.engine.result.ResultProxy object at 0x7f3c8bc950b8>获取该对象的数据条数: num = result.ro...

2018-12-29 11:11:29 3389

原创 [Err] 1366 - Incorrect string value: '\xE7\x94\xBB\xE5\x83\x8F...' for column 'name' at row

从数据库读出的数据后再往MySQL数据库中插入时,报了这个错, 解析出原生的SQL语句后在Navicat手动插入, 发现插入的数据中有‘in’,就以为是MySQL数据和python的关键字有冲突, 就改成了‘_in’, 改了以后,数据真的插入成功了。但是, 我遇到的问题这样只是解决的表面问题, 因为这个字段是个枚举类型: _in = 'in' , 写入数据库时,需要写入'_in', 而从数据库...

2018-12-28 10:09:32 3125

原创 sqlalchemy.exc.DataError: (pymysql.err.DataError) (1265, "Data truncated for column 'type' at row 1

flask项目跑起来以后, 在postman上访问接口,报了这个错 sqlalchemy.exc.DataError: (pymysql.err.DataError) (1265, "Data truncated for column 'type' at row 1,原因: 传递的参数中, 某个参数的类型和model中的定义的类型不一致解决方案: 修改参数类型后,就OK了....

2018-12-18 20:42:11 3488

原创 pycharm安装配置pep8插件(很简单)

一. 你得先安装一个pycharm二. 安装pep8插件, 在pycharm的Terminal上输入: pip install pep8,点击回车,检查是否安装成功:setting-->project interpreter, 看右侧的package中是否有pep8.三. 打开PyCharm,File-->setting--> tools-->external to...

2018-12-13 20:15:40 6915 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除