redis-limpyd的一些扩展,它是一个Python中的redis ORM(类似)。
项目描述
redis-limpyd-extensions
为redis-limpyd (redis orm (类似)在Python中)提供一些扩展
在哪里找到它
安装
支持Python版本2.7,以及3.5到3.8(CPython和PyPy)。
支持Redis-server版本 >= 3。
支持Redis-py版本 >= 3。
支持Redis-limpyd版本 >= 2。
如果您需要低于上述要求的旧版本,仍然可以使用limpyd-extensions版本 < 2。
pip install redis-limpyd-extensions
可用的扩展列表
在两侧添加/删除相关项
动态字段
动态字段
动态字段提供了一种通过定义一个(或多个)动态字段来向模型添加无限字段的方法,并使用动态部分来使用它。例如,动态字段名“foo”可以与您想要的任何动态部分一起使用来创建动态变体:“foo_bar”用于动态部分“bar”,“foo_baz”用于动态部分“baz”,依此类推。
提供了一个简单的 API 来使用它们以及根据它们进行过滤。
要使用动态字段,您的模型必须继承以下 mixin:位于 limpyd_extensions.dynamic.model 中的 ModelWithDynamicFieldMixin。它是一个 mixin,您应该与另一个 RedisModel 类一起使用。字段作为字段类(DynamicStringField、DynamicInstanceHashField、DynamicListField、DynamicSetField、DynamicSortedSetField、DynamicHashField)或作为 mixin(DynamicFieldMixin)使用,如果您想适应外部字段。您可以在 limpyd_extensions.dynamic.fields 中找到它们。
如何在模型上定义动态字段的简短示例
from limpyd.model import RedisModel
from limpyd_extension.dynamic.model import ModelWithDynamicFieldMixin
from limpyd_extension.dynamic.fields import DynamicSetField
class MyModel(ModelWithDynamicFieldMixin, RedisModel):
foo = DynamicSetField(indexable=True)
由于 foo 字段是动态的,您不能对其运行任何命令,而只能对其动态变体进行操作。如何做到这一点?
有两种方法
使用模型的 get_field 方法
foo_bar = myinstance.get_field('foo_bar')
使用字段的 get_for 方法
foo_bar = myinstance.foo.get_for('bar')
后者在您有一个变量而不是已知值时很有用
somebar = 'bar'
foo_bar = myinstance.foo.get_for(somevar)
请注意,您可以使用此快捷方式代替使用 get_for
foo_bar = myinstance.foo(somevar)
了解这一点后,您可以对这些字段进行操作
myinstance.foo(somevar).sadd('one', 'two', 'three')
myinstance.foo(othervar).sadd('four', 'five')
myotherinstance.foo(somevar).sadd('three', 'thirty')
print myinstance.foo(somevar).smembers()
print myinstance.foo(othervar).smembers()
print myotherinstance.foo(somevar).smembers()
要了解动态_field 中的现有版本,您可以使用 scan_fields。
它与 SetField(来自 limpyd)的 sscan 命令使用相同的参数,因为它应用于保存所有版本的库存键。
因此,如果您有一些版本
您可以检索全部
或者部分
过滤
要在可索引的动态字段上过滤,也有两种方法
使用经典方式,如果您事先知道动态部分
MyModel.collection(foo_bar='three')
使用新的 dynamic_filter 方法
MyModel.collection().dynamic_filter('foo', 'bar', 'three')
参数包括:字段名称、动态部分、过滤值,以及在上一个示例中没有显示的索引后缀。
此后缀默认为空。
但如果你想做的
MyModel.collection(foo_bar__eq='three')
您可以使用 dynamic_filter 这样做
MyModel.collection().dynamic_filter('foo', 'bar', 'three', 'eq') # you can use '__eq' too
与 ModelWithDynamicFieldMixin 一起使用的集合管理器依赖于 ExtendedCollectionManager,因此您可以在结果集合上链式调用过滤和动态过滤。
提供类
以下是 limpyd_extensions.dynamic 模块提供的模块和类的列表
模型
混合
ModelWithDynamicFieldMixin(object) - 用于具有动态字段的模型的混合
集合
混合
CollectionManagerForModelWithDynamicFieldMixin(object) - 如果您想要将自己的动态过滤方法添加到自己的集合管理器中,请使用此混合
完整类
CollectionManagerForModelWithDynamicField(CollectionManagerForModelWithDynamicFieldMixin, ExtendedCollectionManager) - 从我们的混合和 limpyd.contrib.collection 的管理器中继承的简单类
字段
混合
DynamicFieldMixin(object) - 在所有关于动态字段的工作完成后,用于将动态字段支持添加到您自己的字段中的混合
完整类 所有字段简单地继承自我们的混合和所需的基字段,不再添加其他内容
DynamicStringField(DynamicFieldMixin, StringField)
DynamicInstanceHashField(DynamicFieldMixin, InstanceHashField)
DynamicListField(DynamicFieldMixin, ListField)
DynamicSetField(DynamicFieldMixin, SetField)
DynamicSortedSetField(DynamicFieldMixin, SortedSetField)
DynamicHashField(DynamicFieldMixin, HashField)
相关
混合
DynamicRelatedFieldMixin(DynamicFieldMixin) - 在所有关于动态相关字段的工作完成后,用于将动态字段支持添加到您自己的相关字段中的混合
完整类
DynamicFKStringField(DynamicRelatedFieldMixin, FKStringField)
DynamicFKInstanceHashField(DynamicRelatedFieldMixin, FKInstanceHashField)
DynamicM2MSetField(DynamicRelatedFieldMixin, M2MSetField)
DynamicM2MListField(DynamicRelatedFieldMixin, M2MListField)
DynamicM2MSortedSetField(DynamicRelatedFieldMixin, M2MSortedSetField)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
构建分发
redis-limpyd-extensions-2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e7122695f37d8314d30ad799d4614a5be2d0fe4d238f6e99aca5fc177ecfbd6 |
|
MD5 | fc207098c3d98317fd2424763241f6ad |
|
BLAKE2b-256 | b32d93f0eaa15aef9e3f2e85ae244de81eabcef7fe4a5b1a6863cb7c563bb016 |
redis_limpyd_extensions-2.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | de1a2e2d3592d13244905242e1d63d4b0d06039c14bd14a485d0f42f6a6869a7 |
|
MD5 | 32410c04f4d3965a0bd4eb5d879fe7f3 |
|
BLAKE2b-256 | f8cca8cdcbb53615c41c9fce62592054c549c71e4f1b7466a2fcafdb07fa78c5 |