• 3.2
  • 5.0
  • 6.1
  • Версия документации: 3.1

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

Все эти операции доступны через модуль 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 с пользователем, у которого они есть. В этом случае подключитесь к базе данных Django и выполните запрос «CREATE EXTENSION IF NOT EXISTS hstore;».

CreateExtension

class CreateExtension(name)

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

name

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

BloomExtension

class BloomExtension
New in Django 3.1.

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

CreateExtension

class BtreeGinExtension

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

CreateExtension

class BtreeGistExtension

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

CreateExtension

class CITextExtension

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

CreateExtension

class CryptoExtension

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

HStoreExtension

class HStoreExtension

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

CreateExtension

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. При использовании этой опции следует учитывать несколько предостережений: см. документацию PostgreSQL по одновременному построению индексов <https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY>`_.

class RemoveIndexConcurrently(model_name, name)

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

Примечание

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

Back to Top