跳转到主要内容

Django DBCache Fields

项目描述

版本::
0.9.3
文档::

https://django-dbcache-fields.readthedocs.io/

下载::

https://pypi.python.org/pypi/django_dbcache_fields

源代码::

https://github.com/maykinmedia/django-dbcache-fields

关键词::

django, database, cache, methods, decorator

Build status coverage BSD License Supported Python versions Supported Django versions

关于

这个库提供了一个装饰器 dbcache,用于将Django Model 方法的输出缓存到数据库中。

它为每个你装饰的方法在你的 Model 上添加一个常规 Field。这意味着你可以使用所有的ORM函数,如聚合和迁移。你可以使用现有的字段,或者让 dbcache 为你创建字段。

您也可以通过创建一个 _dirty_ 函数或指示哪些其他模型影响此缓存的值来使缓存的值无效。默认情况下,缓存的值仅在模型保存时更新。

安装

您可以通过Python包索引(PyPI)或从源安装 django_dbcache_fields

使用 pip 安装

$ pip install -U django_dbcache_fields

用法

要使用此功能,您需要按照以下步骤操作

  1. 安装 django_dbcache_fields 库

    $ pip install django_dbcache_fields
  2. django_dbcache_fields 添加到 Django 项目的 settings.py 中的 INSTALLED_APPS

    INSTALLED_APPS = (
        # ...,
        'django_dbcache_fields',
    )

    注意,模块名称中没有破折号,只有下划线。

  3. 全部完成。现在您可以在您的 Model 中使用 @dbcache 装饰方法。

示例

简单示例,展示 dbcache 的作用

from django.db import models
from django_dbcache_fields.decorators import dbcache

class Ingredient(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=4, decimal_places=2)

class Pizza(models.Model):
    name = models.CharField(max_length=100)
    ingredients = models.ManyToManyField(Ingredient)

    @dbcache(models.DecimalField(max_digits=6, decimal_places=2,
             blank=True, null=True), invalidated_by=['myapp.Ingredient'])
    def get_price(self):
        return self.ingredients.aggregate(total=Sum('price'))['total'] or Decimal()

每次调用 get_price 都会执行数据库查询以计算所有成分的总价格。然而,dbcache 装饰器导致模型中添加了一个新字段:一个可以存储 get_price 函数结果的 DecimalField,因此不需要重复执行相同的查询。

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源代码分布

django_dbcache_fields-0.9.3.tar.gz (711.6 kB 查看哈希值)

上传时间 源代码

构建分布

django_dbcache_fields-0.9.3-py2.py3-none-any.whl (10.0 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页