Spec-Zone.ru › Django 3.0

Операции миграции базы данных

Все эти операции доступны из модуля django.contrib.postgres.operations.

Создание расширения PostgreSQL с помощью миграций

Вы можете создать расширение PostgreSQL в вашей базе данных, используя файл миграции. Этот пример создает расширение hstore, но те же принципы применимы и для других расширений.

Настройте расширение hstore в PostgreSQL перед первой операцией CreateModel или AddField, которая включает HStoreField, добавив миграцию с операцией HStoreExtension. Например:

from django.contrib.postgres.operations import HStoreExtension

class Migration(migrations.Migration):
    ...

    operations = [
        HStoreExtension(),
        ...
    ]

Для создания расширения требуется пользователь базы данных с правами суперпользователя. Если пользователь Django базы данных не имеет прав суперпользователя, вам необходимо создать расширение вне миграций Django с пользователем, имеющим соответствующие права. В этом случае подключитесь к вашей базе данных Django и выполните запрос CREATE EXTENSION IF NOT EXISTS hstore;.

CreateExtension

class CreateExtension(name)

Подкласс Operation, который устанавливает расширения PostgreSQL.

name

Это обязательный аргумент. Название расширения, которое нужно установить.

BtreeGinExtension

class BtreeGinExtension

Установите расширение btree_gin.

BtreeGistExtension

class BtreeGistExtension

Установите расширение btree_gist.

CITextExtension

class CITextExtension

Устанавливает расширение citext.

CryptoExtension

class CryptoExtension

Устанавливает расширение pgcrypto.

HStoreExtension

class HStoreExtension

Устанавливает расширение hstore и также настраивает подключение для интерпретации данных hstore для возможного использования в последующих миграциях.

TrigramExtension

class TrigramExtension

Устанавливает расширение pg_trgm.

UnaccentExtension

class UnaccentExtension

Устанавливает расширение unaccent.

Операции индексации в параллельном режиме

Новое в Django 3.0.

PostgreSQL поддерживает опцию CONCURRENTLY для CREATE INDEX и DROP INDEX операторов для добавления и удаления индексов без блокировки операций записи. Эта опция полезна для добавления или удаления индекса в базе данных реального производства.

class AddIndexConcurrently(model_name, index)

Аналогично AddIndex, но создаёт индекс с опцией CONCURRENTLY. Обратите внимание на некоторые особенности использования этой опции, см. документацию PostgreSQL по созданию индексов в параллельном режиме.

class RemoveIndexConcurrently(model_name, name)

Аналогично RemoveIndex, но удаляет индекс с опцией CONCURRENTLY. Обратите внимание на некоторые особенности использования этой опции, см. документацию PostgreSQL.

Примечание

Опция CONCURRENTLY не поддерживается внутри транзакции (см. неатомарные миграции).

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/3.0/ref/contrib/postgres/operations/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API