hutool.core.memory_repo¶
内存数据仓库,提供类 Django ORM 的内存数据查询接口。
支持 filter/exclude/order_by/get/first/last 等链式查询操作。
Module Contents¶
Classes¶
内存数据仓库,提供类 Django ORM 的内存数据查询接口。 |
Functions¶
获取内置查询谓词函数。 |
Data¶
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=18、name__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 – 过滤条件
- 返回:
匹配的记录
- 抛出:
ObjectDoesNotExist – 无匹配记录
MultipleObjectsReturned – 匹配多于一条
- 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 – 一个或多个字段名
- 返回:
以字段值元组为键的字典