【问题标题】:Django cache separate databaseDjango缓存单独的数据库
【发布时间】:2011-08-11 06:04:08
【问题描述】:

我的 django 项目正在使用单独的数据库,并且必须使用 django 缓存来缓存该数据库。所以这条路并不直。

我读过djangoproject,但我听不懂。该链接显示了一个带有一些定义的模型“CacheRouter”。

我不确定是不是 示例代码或

  • 代码已经存在于某处或
  • 我必须更改的代码或
  • 我必须在模型中添加的代码。

谁能详细解释一下?

【问题讨论】:

  • 我不确定您要问什么问题或遇到什么问题……您能澄清一下吗?
  • 我手动选择单独的数据库,该数据库需要缓存。我需要写 ROUTER 吗?如果是,在哪里?模型.py ? settings.py 怎么知道?

标签: database django caching


【解决方案1】:

你可以做一个通用路由器,它是使用一个dict 配置的应用程序去一个非默认数据库。

app_to_database = {
    'django_cache': 'the_declared_name_of_the_cache_database',
}

class CacheRouter(object):

    def db_for_read(self, model, **hints):
        return app_to_database.get(model._meta.app_label, None)

    def db_for_write(self, model, **hints):
        return app_to_database.get(model._meta.app_label, None)

    def allow_syncdb(self, db, model):
        _db = app_to_database.get(model._meta.app_label, None)
        return db == _db if _db else None

编辑:更好的解释

如果您想使用不同的架构,或数据库服务器,甚至完全不同的后端,您需要在settings.py 中声明它们:

DATABASES = {
    'default': # the one storing your app data
        { 'NAME': 'main_db', # this is the schema name
          'USER': '...',
          'PASSWORD': '...',
          'ENGINE': '...', # etc...
        },
    'the_declared_name_of_the_cache_database': # the name is arbitrary here
        { 'NAME': 'db_for_djcache', # this is the schema name
          'USER': '...',
          'PASSWORD': '...',
          'ENGINE': '...', # etc...
        },
}

DATABASE_ROUTERS = ['path.to.MyAppRouter'] # that is, the module.ClassName of the
                                           # router class you defined above.

另一方面,如果您似乎从您的评论中暗示,您只需要一个不同的表(在同一架构内),您根本不需要路由器,一切都由 django 顺利管理。

您可以使用任何 GUI 客户端检查数据库发生的情况。只需打开您的架构(ta)并检查表格及其内容。

【讨论】:

  • 我相信我们使用单独的表进行缓存。那么,我应该在“the_declared_name_of_the_cache_database”中放入什么?那么我需要在我的 app.models.py 中编写这段代码吗?如果是这样,settings.py 怎么知道这段代码?
  • OKAY,如果我添加了这个 CacheRouter,我怎么知道它在工作?如何检查?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2016-07-05
  • 2012-05-03
  • 1970-01-01
相关资源
最近更新 更多