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