Невозможно сохранить в разных базах данных в django?
Я пытаюсь сохранить данные в разные базы данных, но они не сохраняются и не выдают никаких ошибок.
settings.py
У меня есть две базы данных mypage
и ringi
. mypage
установлена по умолчанию.
DATABASE_ROUTERS = ['app_kanri.router.myrouter']
DATABASE_APPS_MAPPING = {
'ringi':'ringi_db'
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mypage',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
},
'ringi_db':{
'ENGINE': 'django.db.backends.mysql',
'NAME': 'ringi',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
models.py
class Approvallog(models.Model):
# id = models.IntegerField(primary_key=True)
cat_name = models.CharField(max_length=100,default=None,blank=True)
cat_id = models.IntegerField(default=None,blank=True)
cat_subid = models.IntegerField(default=None,blank=True)
status = models.IntegerField(default=None,blank=True)
user = models.CharField(max_length=100,default=None,blank=True)
app_root = models.IntegerField(default=None,blank=True)
app_step = models.IntegerField(default=None,blank=True)
comment = models.TextField(default=None,blank=True)
created = models.DateTimeField(default=None,blank=True)
modified = models.DateTimeField(default=None,blank=True)
class Meta:
app_label = 'ringi'
db_table = "approvallogs"
router.py
class myrouter:
def db_for_read(self, model, **hints):
if model._meta.app_label == 'ringi':
return 'ringi_db'
else:
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'ringi':
return 'ringi_db'
else:
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'ringi' or \
obj2._meta.app_label == 'ringi':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'ringi':
return db == 'ringi_db'
return None
Вот как я экономлю
Appr_log = Approvallog()
Appr_log.cat_name=str(data2['cat_name'])
Appr_log.cat_id=data2['cat_id']
Appr_log.cat_subid=data2['cat_subid']
Appr_log.status=data2['status']
Appr_log.user=data2['user']
Appr_log.save(using="ringi_db")
Я попытался напечатать(Appr_log.save(using="ringi_db")) и None
печатается.
Я проверил, могу ли я получить таблицу Approvallog с помощью show(Approvallog.objects.all())
и я могу видеть все строки в моем терминале. (show - некоторая функция для печати QuerySet).
Есть ли какая-нибудь ошибка?