- 博客(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
387
原创 使用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
1322
原创 python和mysql存储过程的一些事儿
最近因为要提升产品效率,不得不蹚了蹚MySQL存储过程的水.只能说水不算深,效果也很棒.在这里做个记录,免得忘了. 1. Python调用存储过程的方式 SqlAlchemy的session是可以直接调用的.因为session本身封装了个数据库回话,底层其实也是调用的依赖的数据库殷勤的方法.所以可以直接以execute的方式去调用存储过程...
2020-03-24 11:30:45
527
原创 自己做的多进程代理~
前段时间遭遇了性能问题,主要是项目应用有在windows下部署的场景,在这样的场景下性能不够优秀。对标linux下Gunicore的waitress并不能解决我们的问题。所以研究了一下Gunicore。发现Gunicore的核心主要有如下几点: 1. 多进程 2. 端口复用(socket.SO_REUSEADDR) 3. Linux内心...
2019-10-21 16:06:51
2692
原创 前缀树
class Trie: def __init__(self): """ Initialize your data structure here. 初始化树结构,以字典形式存放进lookup内。lookup字典才是真正的树结构存放处。 """ self.lookup = {} def insert(...
2019-08-27 09:49:34
226
原创 应用升级冷启动场景下的数据导入和导出
项目中遇到一个比较棘手的问题,之前的应用是没有migrate相关功能的。从下一个版本起,需要实现应用的数据库自动升级。采用的是Flask-Migrate插件。但是要做migrate的前提是有之前的数据库版本文件支撑。 最理想的情况是没有什么用户数据,简单粗暴的强制用户重新安装并且重新建立新的数据库,这样以后都可以直接调用migrate的相关命令进行升级。这种做法显然不...
2019-06-11 16:33:35
391
原创 flask_migrate的一些坑和解决办法
最近再搞数据库自动升级的功能,本以为有现成的插件Flask_Migrate可以用,但是没想到还是开始了填坑之路。第一坑,外键约束的增减。 Sqlalchemy的model在我们做外键关联的时候,是不给外键名称的。这样做没什么问题,因为每一种数据库都有自己的默认的外键生成规则,orm完全可以不考虑这一部分。但是和Flask_Migrate一起使用的时候就会出现问题。...
2019-06-04 17:06:15
6983
6
原创 django restfremwork serializer的validate机制
使用DRF去创建标准API的时候有一个日常操作就是serializer.is_valid(),用于检查序列化对象serializer是否合规,这个方法有一个参数叫raise_exception(boolean值),用于控制是不是抛出错误啥的。在自定义的serializer内自定义validate,方法名用validate和要做特殊检查的字段用下划线连起来命名就可以直接检查,比如要实现...
2019-05-23 17:04:02
4085
sourcegraph.crx
2020-04-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人