Могу ли я запросить дополнительную базу данных из Django без ORM? - PullRequest
0 голосов
/ 01 сентября 2018

Мне нужно запросить базу данных, контролируемую другим приложением, из моего приложения Django. В идеале я также хотел бы изменить несколько значений.

Я настроил вторичное соединение с базой данных из Django, но поскольку таблицы управляются где-то еще, они не вписываются в ORM Django. Я бы предпочел делать простые SQL-запросы из моего приложения Django.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

У вас есть два варианта:

  1. ОРМ-менее:
    просто установите и импортируйте драйвер Python для своей второй базы данных (MySQLdb для MySQL, psycopg2 для PostgreSQL и т. д.), затем создайте соединение и запускайте простые SQL-запросы без использования Django. Подробную информацию об этом можно найти в документации к соответствующим драйверам базы данных.

  2. ОРМ-FUL:

    • Добавить вторую базу данных в settings.py:

      DATABASES = {
        'default': {
          # your Django db settings here
        },
        'second': {  # any name can be used
          # your second db settings here
        }
      }
      
    • Определите ваши модели, используя Django ORM, и не забудьте установить managed = False и правильный table_name в моделях 'Meta.
    • Запросите вторую базу данных с помощью ModelInSecondDb.objects.using('second').all()
    • При желании добавьте класс маршрутизатора базы данных, который будет автоматически направлять все запросы для этих моделей в ваш second db.
0 голосов
/ 01 сентября 2018

Вы можете определить другие конфигурации базы данных в настройках django, например:

DATABASES = {
  'default': {},
  'another_db' : {
    ...
  }
}

и в Django ORM вы можете сделать так:

another_db_table.objects.using('another_db').all()

ознакомьтесь с документами Django здесь

...