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

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

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

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

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

from django.contrib.postgres.operations import HStoreExtension

class Migration(migrations.Migration):
    ...

    operations = [
        HStoreExtension(),
        ...
    ]

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

CreateExtension

class CreateExtension(name)[исходный код]

Подкласс Operation, который устанавливает расширение PostgreSQL. Для обычных расширений используйте один из более специфических подклассов ниже.

name

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

BloomExtension

class BloomExtension[исходный код]
New in Django 3.1.

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

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.

Одновременные операции с индексами

New in Django 3.0.

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

class AddIndexConcurrently(model_name, index)[исходный код]

Как AddIndex, но создает индекс с помощью опции CONCURRENTLY. При использовании этой опции есть несколько предостережений, о которых следует знать, см. the PostgreSQL documentation of building indexes concurrently.

class RemoveIndexConcurrently(model_name, name)[исходный код]

Как RemoveIndex, но удаляет индекс с опцией CONCURRENTLY. При использовании этой опции есть несколько предостережений, о которых следует знать, см. the PostgreSQL documentation.

Примечание

Опция CONCURRENTLY не поддерживается внутри транзакции (см. non-atomic migration).

Вернуться на верх