自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (1)
  • 收藏
  • 关注

原创 Django delete报错, TypeError: unhashable type: ‘User‘

碰见一个问题,User.objects.filter(id=uid, company_id=company_id, role=UserRole.Normal).delete() 项目里非常简单的一个Django Orm删除操作,但是报了如题目里描述的错误. 跟进Django源码(3.17版本),报错位置在django/db/models/deletion.py的113行。 for obj in objs: if obj not in ins...

2021-03-30 15:49:11 331

原创 使用Cython编译一把项目

Python是解释型语言,没有办法直接编译。个人认为python run time性能较弱在绝大多数场景下是个伪命题,性能弱鸡基本都是代码写的问题,跟人家python没啥关系。之所以会想着编译下,是为了保护源码。毕竟pyc这种东西一键反编译,自欺欺人不太好。OK, 下面直接贴代码~from distutils.core import setupfrom Cython.Build import cythonizefrom shutil import copyfile, rmtreei...

2020-06-05 18:11:44 1182

原创 python和mysql存储过程的一些事儿

最近因为要提升产品效率,不得不蹚了蹚MySQL存储过程的水.只能说水不算深,效果也很棒.在这里做个记录,免得忘了. 1. Python调用存储过程的方式 SqlAlchemy的session是可以直接调用的.因为session本身封装了个数据库回话,底层其实也是调用的依赖的数据库殷勤的方法.所以可以直接以execute的方式去调用存储过程...

2020-03-24 11:30:45 452

原创 自己做的多进程代理~

前段时间遭遇了性能问题,主要是项目应用有在windows下部署的场景,在这样的场景下性能不够优秀。对标linux下Gunicore的waitress并不能解决我们的问题。所以研究了一下Gunicore。发现Gunicore的核心主要有如下几点: 1. 多进程 2. 端口复用(socket.SO_REUSEADDR) 3. Linux内心...

2019-10-21 16:06:51 2412

原创 前缀树

class Trie: def __init__(self): """ Initialize your data structure here. 初始化树结构,以字典形式存放进lookup内。lookup字典才是真正的树结构存放处。 """ self.lookup = {} def insert(...

2019-08-27 09:49:34 175

原创 应用升级冷启动场景下的数据导入和导出

项目中遇到一个比较棘手的问题,之前的应用是没有migrate相关功能的。从下一个版本起,需要实现应用的数据库自动升级。采用的是Flask-Migrate插件。但是要做migrate的前提是有之前的数据库版本文件支撑。 最理想的情况是没有什么用户数据,简单粗暴的强制用户重新安装并且重新建立新的数据库,这样以后都可以直接调用migrate的相关命令进行升级。这种做法显然不...

2019-06-11 16:33:35 357

原创 flask_migrate的一些坑和解决办法

最近再搞数据库自动升级的功能,本以为有现成的插件Flask_Migrate可以用,但是没想到还是开始了填坑之路。第一坑,外键约束的增减。 Sqlalchemy的model在我们做外键关联的时候,是不给外键名称的。这样做没什么问题,因为每一种数据库都有自己的默认的外键生成规则,orm完全可以不考虑这一部分。但是和Flask_Migrate一起使用的时候就会出现问题。...

2019-06-04 17:06:15 6645 6

原创 django restfremwork serializer的validate机制

使用DRF去创建标准API的时候有一个日常操作就是serializer.is_valid(),用于检查序列化对象serializer是否合规,这个方法有一个参数叫raise_exception(boolean值),用于控制是不是抛出错误啥的。在自定义的serializer内自定义validate,方法名用validate和要做特殊检查的字段用下划线连起来命名就可以直接检查,比如要实现...

2019-05-23 17:04:02 3934

sourcegraph.crx

Chrome浏览器的插件,可以一键使github代码目录结构化,方便查看代码.格式化后的目录与idea类似. Sourcegraph 是一款能够根据语义来把Web上的开源代码编入索引的代码搜索浏览工具。你可以从代码仓库和安装包甚至是函数里搜索代码,同时也可以直接点击被完全创建了链接的代码来阅读文档、跳转到变量定义或者马上找到可用的Demo。总而言之,你可以在你的web浏览器上完成这一切,而不需要配置任何编辑器。由Sourcegraph 出品的这款Chrome插件,可以非常方便的浏览和搜索Github上的代码,持跨repository搜索、跳转到定义、查找引用等功能,宛若一个功能强大的IDE。核心功能如跳转到定义(Go-to-definition)——浏览文件或查看pull请求时,将鼠标悬停在代码上可以查看文档提示,单击即可跳转到定义、查找引用或全文搜索。

2020-04-01

空空如也

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

TA关注的人

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