Джанго читать и писать из нескольких баз данных - PullRequest
0 голосов
/ 15 октября 2018

Здравствуйте, ребята, я разрабатываю веб-приложение на django и использую базу данных postgresql.Я должен быть в состоянии также получить некоторые данные из другого приложения, которое использует базу данных sqlserver.Таблицы, которые я пытаюсь получить, содержат много данных, поэтому, возможно, не стоит использовать прямую ссылку.Каков наилучший подход к этой проблеме?Могу ли я использовать соединение sql-odbc для получения данных, также как я могу заполнить таблицы, скажем, я создаю локальную таблицу и перенесу данные из sql в postgresql schedualy.Хотелось бы понять, как вы справились с этой проблемой и каков ваш опыт.Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

В файле settings.py отредактируйте этот код (для нескольких баз данных)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'django',
        'USER': 'postgres',
        'PASSWORD': '12345678',
        'HOST': 'localhost',
        'PORT': '5432',
    },
    'connection_other_db': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mi_db',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Применить команду миграции:

Для базы данных по умолчанию

$ ./manage.py migrate

Для другой базы данных (connection_other_db)

$ ./manage.py migrate --database=connection_other_db

В ваших представлениях, Для использования ORM используйте это:

Mi_Model.objects.using('connection_other_db').all() # For mysql database
Mi_Model.objects.all() # For default database (postgresql)

Для создания объекта:

s = Mi_Model()
s._state.adding = False
s._state.db = 'connection_other_db'
s.field_1 = 'A value'
s.save()

или

s = Mi_Model.objects.using('connection_other_db').create(
   field_1='A value'
   # ....
)

Для транзакций использования:

with transaction.atomic(using='connection_other_db'):
   # Your code here

Для использования курсоров

with connections['connection_other_db'].cursor() as cursor:
   cursor.execute('your query')

Документация Django: https://docs.djangoproject.com/es/2.1/topics/db/multi-db/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...