Перезаписывает ли функция save() в Django старые данные в таблице DB?
Я работаю над приложением Django, которое работает с двумя базами данных, примерно так:
- Oracle DB(to fetch the data on an hourly basis)
- MySql DB (to save the processed data fetched from the Oracle DB)
Конфигурация моей базы данных в settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dashboard',
'USER': 'db1',
'PASSWORD': 'password1',
'HOST': 'localhost',
'PORT': '3306',
},
'MBDB': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'xe',
'USER': 'db2',
'PASSWORD': 'password2',
'HOST': 'localhost',
'PORT': '1521',
}
}
Моя Django-модель:
class Transactions(models.Model):
class Meta:
db_table='TRANSACTIONS'
unique_together=(("TIME_UPDATED","TRAN_TYPE"),)
indexes=[
models.Index(fields=["TIME_UPDATED","TRAN_TYPE"]),
models.Index(fields=["TRAN_TYPE"])
]
TIME_UPDATED = models.DateTimeField()
TRAN_TYPE = models.CharField(max_length=32,primary_key=True)
SUCCESS = models.IntegerField()
TECHNICAL_DECLINES = models.IntegerField()
BUSINESS_DECLINES = models.IntegerField()
TOTAL = models.IntegerField()
PERCENTAGE_TECH_DEC = models.FloatField()
def __str__(self):
return self.TRAN_TYPE
def save(self,D,tran):
self.TIME_UPDATED=D
self.TRAN_TYPE=T=tran['Type']
self.SUCCESS=S=int(tran['Success'])
self.TECHNICAL_DECLINES=TD=int(tran['Tech_dec'])
self.BUSINESS_DECLINES=BD=int(tran['Bus_dec'])
self.TOTAL=total=S+TD+BD
if total==0:#division by zero error constraint
self.PERCENTAGE_TECH_DEC=0
else:
self.PERCENTAGE_TECH_DEC=((TD/(total))*100)
super(Transactions,self).save()
Here the column ```TRAN_TYPE`` is defined as the primary key and both ```TRAN_TYPE``` AND ```TIME_UPDATED``` are composite primary keys as defined in ```Class Meta```.
Sample-Queryset из views.py:
{'SERVICE_CODE': 'IBKREVERSAL', 'Type': 'IBKREVERSAL', 'Success': 1, 'Tech_dec': 4, 'Bus_dec': 0}
Кверисет обработан и сохранен @ Транзакции 14 октября 2021 - 17:25:20:
{'TIME_UPDATED': datetime.datetime(2021, 10, 14, 17, 25, 20, tzinfo=<UTC>), 'TRAN_TYPE': 'IBKREVERSAL', 'SUCCESS': 1, 'TECHNICAL_DECLINES': 4, 'BUSINESS_DECLINES': 0, 'TOTAL': 5, 'PERCENTAGE_TECH_DEC': Decimal('80.000')}
Теперь, когда я пытаюсь обработать и сохранить тот же Queryset в другое время, скажем, 14 октября 2021 - 17:27:00, предыдущие данные перезаписываются, что не должно происходить, поскольку я пытаюсь сохранить данные в виде записи.
Как я могу это сделать?