Spec-Zone.ru › Django 3.1

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

Все эти операции доступны из модуля 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

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

BloomExtension

class BloomExtension
Новое в 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.

Операции с индексами в режиме одновременного доступа

Новое в 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.1/ref/contrib/postgres/operations/

Spec-Zone.ru

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