Leetao's Blog

Talk is cheap, show me the code

0%

前言

mybatis 支持一对多的关系映射,如果需要在这种关系下,使用 pagehelper 的话,需要注意原本的 sql 以及 resultmap 的用法, 否则可能会导致 pagehelper 返回的 total 比预期的数量大。

阅读全文 »

前言

Python 的枚举也是一个在时常被被经常使用的一个特性,在 Python3.11 之前,Python 标准库支持枚举类型除了枚举基类 Enum,就只有 IntEnum 了(创建 int 子枚举类型常量的基类),Python 3.11 开始支持了 StrEnum,如果你的当前使用版本是 Python3.11 则可以略过一下内容。
接下来要介绍的内容,则是在 Python3.11 之前的版本,如何实现 StrEnum 以及一些注意事项。

阅读全文 »

前言

Field 是 MySQL 中的一个函数,其基本使用方法如下:
作用
用于返回指定值在给定值列表中的索引位置
语法

1
FIELD(value, val1, val2, val3, ...)
阅读全文 »

以下例子均的运行环境为 Python 3.9.5,不同版本的实际运行结果可能有所不同

前言

前端时间看了 Golang 的 学习了一下 数组 和 Slice,其中 Slice 相当于动态数组,其中数组的长度是固定的,而 Slice 则是不定长的。在 Python 中是没有数组和 Slice 的概念,它们可以通通归类为 List(列表),那么问题来了,定长的 List 和 不定长的 List 在表现上会有区别吗?(这里的定长的 List 是指对 List 进行初始化,也就是所谓的预分配)
接下来通过几个例子去验证这个问题。

阅读全文 »

以下例子以 mysql 为准

前言

django orm 中关于更新,有两种操作分别是:

  1. update
  2. bulk_update

对于 createbulk_create 这俩类,毫无疑问存在大量数据插入的时候,后者效率更高一些。但是对于更新则需要根据实际情况进行分析了,了解 django 是如何实现 bulk_update ,对于我们使用会有一定的好处。

bulk_update 的应用场景是,每个需要更新的数据的 value 值各不相同,如果是相同,则没有必要去使用 bulk_update

阅读全文 »

前言

在实际开发中,有时候需要用 Python 去处理一些 JSON 文件,一旦 JSON 文件过大,就有可能出现加载时间过长,内存消耗过大的问题,甚至会导致内存耗尽。所以如果正确地处理大的 JSON 文件呢?

阅读全文 »

前言

在 Java 中有 [[重载]] 的概念:

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

Python 本身不支持 重载 这个特性,但是通过 functools.singledispatch 可以实现函数的重载。接下来通过一个例子,简单地演示一下 Python 的函数重载。

阅读全文 »

django 默认 bulk_create 不支持 signal,可以通过自定义 models.Manager 支持这个特性

1
2
3
4
5
6
7
8
9
10
class CustomManager(models.Manager):  
def bulk_create(self, items, **kwargs):
for i in items:
post_save.send(i.__class__, instance=i, created=True)
return super().bulk_create(items, **kwargs)

def bulk_update(self, items, fields, **kwargs):
super().bulk_update(items, fields, **kwargs)
for i in items:
post_save.send(i.__class__, instance=i, created=False)

使用实例:

1
2
3
class Test(db.models):
objects = CustomManager()
...