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