Доброго дня!
Подключаю к проекту 2 БД, 1 по умолчанию создал при создании проекта, 2 существует, мне из нее из таблицы МА надоо получать данные, права только на чтение.
setting.py
DATABASES = {
'default': {
'ENGINE': 'mssql',
'NAME': 'web',
'HOST': 'REP-01',
'PORT': '',
'USER': '****',
'PASSWORD': '****',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server', }
},
'protokol': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'Rem',
'HOST': 'dts07',
'PORT': '',
'USER': '***',
'PASSWORD': '***',
}
}
DATABASE_ROUTERS = ['protocol.router.OneDBRouter',]
файл router.py в проекте protokol
class OneDBRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'protocol':
return 'protokol'
return None # 'default'
views в проекте protokol
def protocol(request,):
r_protocol = MA.objects.filter(OBJECTID='E09216923')
print(r_protocol)
return render(request, 'protocol/protocol.html')
Создал запись необходимых полей в файле models.py но надо ли для существующей БД? или как тогда запросить данные?
class MA(models.Model):
OBJECTID = models.CharField(max_length=120, verbose_name='OBJECTID')
RESTIME = models.IntegerField(verbose_name='RESTIME')
Да, в таблице ошибок обнаружил, что sql запрос джанго составил не правильно:
Variable Value
args
('E09216923',)
query
('SELECT `protocol_ma`.`id`, `protocol_ma`.`OBJECTID`, `protocol_ma`.`RESTIME` '
'FROM `protocol_ma` WHERE `protocol_ma`.`OBJECTID` = %s LIMIT 21')
должно быть так:
SELECT OBJECTID, RESTIME
FROM МА
WHERE МА.OBJECTID = 'E09216923'