РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
82 of 818 menu

Метод using

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

Синтаксис

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

Пример

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

from myapp.models import Article # Получение всех статей из базы-реплики articles = Article.objects.using('replica').all() for article in articles: print(article.title)

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

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

Пример

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

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

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

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

Пример

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

from myapp.models import Article from django.db.models import Count # Подсчет статей в базе-реплике count = Article.objects.using('replica').aggregate(total=Count('id')) print(count['total'])

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

"42"

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

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