Операции по миграции базы данных¶
Все эти 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.
Одновременные операции с индексами¶
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).