Метод using

Метод using применяется к QuerySet и позволяет явно указать, какую базу данных следует использовать для выполнения запроса. Это особенно полезно при работе с несколькими базами данных, настроенными в проекте Django. Метод принимает один аргумент - псевдоним базы данных, указанный в настройках DATABASES. Метод можно вызывать цепочкой, но он должен быть первым в цепочке методов QuerySet.

Синтаксис

pythonModel.objects.using(alias).filter(**conditions)

Пример

Допустим, в проекте настроены две базы данных: 'default' для основных операций и 'replica' для чтения. Получим все статьи из базы-реплики:

pythonfrom myapp.models import Article

# Получение всех статей из базы-реплики
articles = Article.objects.using('replica').all()

for article in articles:
  print(article.title)

Результат выполнения кода:

python"Первая статья"
"Вторая статья"
"Третья статья"

Пример

Используем метод using для выполнения операции сохранения объекта в конкретной базе данных. Сохраним новую статью в основную базу данных:

pythonfrom myapp.models import Article

# Создание новой статьи в основной базе данных
article = Article(title='Новая статья', content='Содержимое статьи')
article.save(using='default')

print(article.title)

Результат выполнения кода:

python"Новая статья"

Пример

Метод using также работает при выполнении агрегирующих запросов. Подсчитаем количество статей в базе-реплике:

pythonfrom myapp.models import Article
from django.db.models import Count

# Подсчет статей в базе-реплике
count = Article.objects.using('replica').aggregate(total=Count('id'))

print(count['total'])

Результат выполнения кода:

python"42"

Смотрите также

  • метод filter,
    который фильтрует QuerySet по заданным условиям
  • метод exclude,
    который исключает записи из QuerySet
  • метод get,
    который получает одну запись из базы данных
  • метод save,
    который сохраняет объект в базу данных