Маршрутизатор кэша в Django - как правильно запустить python manage.py createcachetable для связанной базы данных
Я использую Django для своего проекта.
Мне нужно создать новую таблицу кэша в базе данных.
Команда python manage.py createcachetable
не работает для db_my_project, вместо этого она работает для проекта по умолчанию.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'db_my_project': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_db',
'USER': 'my_username',
'PASSWORD': 'my_password',,
'HOST': 'my_host',
'PORT': '3306',
},
}
У меня есть следующие настройки кэша в settings.py:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'dataframe_cache',
}
}
Как вы можете видеть выше из информации о его местоположении, он должен генерировать таблицу 'dataframe_cache'. Он создает эту таблицу для базы данных по умолчанию (db.sqlite3), но не для базы данных db_my_project (mysql).
Я знаю, что мне нужно реализовать класс маршрутизатора кэша, как показано ниже.
class CacheRouter:
"""A router to control all database cache operations"""
route_app_labels = {'db_my_project'}
def db_for_read(self, model, **hints):
if model._meta.app_label in self.route_app_labels:
return 'db_my_project'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'django_cache':
return 'db_my_project'
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.route_app_labels:
return db == 'db_my_project'
return None
Мой вопрос заключается в том, куда мне поместить этот класс CacheRouter в моем проекте Django, чтобы я мог генерировать новую таблицу для кэша с помощью команды python manage.py createcachetable
?