Операции миграции базы данных
Все эти операции доступны из модуля 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 Это обязательный аргумент. Название расширения, которое нужно установить.
-
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. Обратите внимание на некоторые особенности использования этой опции, см. документацию 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.0/ref/contrib/postgres/operations/