Операции миграции базы данных ¶
Все эти операции доступны в модуле 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
¶
HStoreExtension
¶
-
класс
HStoreExtension
¶ Устанавливает расширение,
hstore
а также настраивает соединение для интерпретации данных hstore для возможного использования в последующих миграциях.
Параллельные операции с индексами ¶
PostgreSQL поддерживает опцию CONCURRENTLY
для операторов, а также для добавления и удаления индексов без блокировки записи. Эта опция полезна для добавления или удаления индексов в активной базе данных в производственной среде.CREATE INDEX
DROP INDEX
-
class
AddIndexConcurrently
( имя_модели , индекс ) ¶ Вроде
AddIndex
, но создает индекс с опциейCONCURRENTLY
. При использовании этой опции следует помнить о нескольких предостережениях. Прочтите документацию PostgreSQL о параллельном построении индексов .
-
класс
RemoveIndexConcurrently
( имя_модели , имя ) ¶ Вроде
RemoveIndex
, но удалить индекс с опциейCONCURRENTLY
. При использовании этой опции следует учитывать несколько предостережений, прочтите документацию PostgreSQL .
Заметка
Опция CONCURRENTLY
не поддерживается внутри транзакции (см. Неатомарные миграции ).