Операции по миграции базы данных¶
Все эти операции доступны через модуль 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¶
BloomExtension¶
- class BloomExtension¶
- New in Django 3.1.
Устанавливает расширение «bloom».
CreateExtension¶
- class BtreeGinExtension¶
Устанавливает расширение btree_gin.
CreateExtension¶
- class BtreeGistExtension¶
Устанавливает расширение btree_gist.
CreateExtension¶
- class CITextExtension¶
Устанавливает расширение
citext.
CreateExtension¶
- class CryptoExtension¶
Устанавливает расширение
pgcrypto.
HStoreExtension¶
- class HStoreExtension¶
Устанавливает расширение hstore, а также настраивает соединение для интерпретации данных hstore для возможного использования при последующих миграциях.
CreateExtension¶
- class TrigramExtension¶
Устанавливает расширение
pg_trgm.
UnaccentExtension¶
- class UnaccentExtension¶
Устанавливает расширение unaccent.
Параллельные операции с индексами¶
PostgreSQL поддерживает опцию CONCURRENTLY для операторов CREATE INDEX и DROP INDEX для добавления и удаления индексов без блокировки записи. Эта опция полезна для добавления или удаления индекса в работающей рабочей базе данных.
- class AddIndexConcurrently(model_name, index)¶
Подобно
AddIndex, но создает индекс с опциейCONCURRENTLY. При использовании этой опции следует учитывать несколько предостережений: см. документацию PostgreSQL по одновременному построению индексов <https://www.postgresql.org/docs/current/sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY>`_.
- class RemoveIndexConcurrently(model_name, name)¶
Подобно
RemoveIndex, но индекс удаляется с помощью опцииCONCURRENTLY. При использовании этой опции следует учитывать несколько предостережений, см. документацию PostgreSQL.
Примечание
Опция CONCURRENTLY не поддерживается внутри транзакции (см. неатомарную миграцию).