hutool.core.memory_repo

内存数据仓库,提供类 Django ORM 的内存数据查询接口。

支持 filter/exclude/order_by/get/first/last 等链式查询操作。

Module Contents

Classes

MemoryRepo

内存数据仓库,提供类 Django ORM 的内存数据查询接口。

Functions

_lookups

获取内置查询谓词函数。

Data

T

API

hutool.core.memory_repo.T = 'TypeVar(...)'
exception hutool.core.memory_repo.ObjectDoesNotExist

Bases: Exception

查询结果为空时抛出。

Initialization

Initialize self. See help(type(self)) for accurate signature.

exception hutool.core.memory_repo.MultipleObjectsReturned

Bases: Exception

查询结果多于一条时抛出。

Initialization

Initialize self. See help(type(self)) for accurate signature.

hutool.core.memory_repo._lookups(filter_name: str) Callable | None

获取内置查询谓词函数。

参数:

filter_name – 查询谓词名称

返回:

谓词函数,或 None

class hutool.core.memory_repo.MemoryRepo(queryset: List[hutool.core.memory_repo.T])

内存数据仓库,提供类 Django ORM 的内存数据查询接口。

支持 filter/exclude/order_by/get/first/last 等链式查询操作。

Examples:

class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

repo = MemoryRepo([
    User("Alice", 30),
    User("Bob", 25),
    User("Charlie", 35),
])

# 过滤
result = repo.filter(age__gte=30).order_by("name")
for user in result:
    print(user.name)  # Alice, Charlie

# 获取单条
bob = repo.get(name="Bob")
参数:

queryset – 初始数据列表

Initialization

property _queryset: List[hutool.core.memory_repo.T]
__iter__()
__getitem__(index)
__len__()
__bool__()
_copy(queryset: List[hutool.core.memory_repo.T]) hutool.core.memory_repo.MemoryRepo
_filter_or_exclude(**kwargs: Any) Callable

构建过滤函数。

filter(**kwargs: Any) hutool.core.memory_repo.MemoryRepo

过滤数据,返回新仓库。

支持 Django 风格的查询谓词,如 age__gt=18name__contains="a"

参数:

kwargs – 过滤条件

返回:

过滤后的新 MemoryRepo

exclude(**kwargs: Any) hutool.core.memory_repo.MemoryRepo

排除数据(与 filter 相反),返回新仓库。

参数:

kwargs – 排除条件

返回:

排除后的新 MemoryRepo

order_by(key: str) hutool.core.memory_repo.MemoryRepo

排序,返回新仓库。

"-" 前缀表示降序(如 "-age")。 支持 "__" 嵌套属性(如 "dept__name")。

参数:

key – 排序键,如 "name""-age"

返回:

排序后的新 MemoryRepo

get(**kwargs: Any) hutool.core.memory_repo.T

获取满足条件的唯一一条记录。

参数:

kwargs – 过滤条件

返回:

匹配的记录

抛出:
find_first(**kwargs: Any) hutool.core.memory_repo.T | None

获取满足条件的第一条记录,无匹配时返回 None

参数:

kwargs – 过滤条件

返回:

匹配的记录或 None

first() hutool.core.memory_repo.T | None

获取第一条记录。

返回:

第一条记录,仓库为空时返回 None

last() hutool.core.memory_repo.T | None

获取最后一条记录。

返回:

最后一条记录,仓库为空时返回 None

all() hutool.core.memory_repo.MemoryRepo

返回所有数据的副本。

返回:

包含所有数据的新 MemoryRepo

exists() bool

判断是否有数据。

返回:

是否非空

count() int

返回数据条数。

返回:

数据条数

as_dict(*keys: str) Dict[tuple, hutool.core.memory_repo.T]

将数据转为字典,以指定字段的组合作为键。

Examples:

repo.as_dict("name")
# {"Alice": <User>, "Bob": <User>, ...}

repo.as_dict("name", "age")
# {("Alice", 30): <User>, ...}
参数:

keys – 一个或多个字段名

返回:

以字段值元组为键的字典