データベース移行操作
これらの操作はすべて、django.contrib.postgres.operations
モジュールから利用できます。
移行を使用した拡張機能の作成
移行ファイルを使用して、データベースにPostgreSQL拡張機能を作成できます。 この例ではhstore拡張機能を作成しますが、他の拡張機能にも同じ原則が適用されます。
HStoreExtension 操作で移行を追加することにより、 HStoreField を含む最初のCreateModel
またはAddField
操作の前にPostgreSQLでhstore拡張機能を設定します。 例えば:
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)
- PostgreSQL拡張機能をインストールする
Operation
サブクラス。
- 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
拡張機能をインストールします。
並行操作のインデックス作成
バージョン3.0の新機能。
PostgreSQLは、CREATE INDEX
およびDROP INDEX
ステートメントのCONCURRENTLY
オプションをサポートして、書き込みをロックアウトせずにインデックスを追加および削除します。 このオプションは、実稼働データベースでインデックスを追加または削除する場合に役立ちます。
- class AddIndexConcurrently(model_name, index)
- AddIndex と同様ですが、
CONCURRENTLY
オプションを使用してインデックスを作成します。 これには、このオプションを使用するときに注意すべきいくつかの注意事項があります。インデックスの同時構築に関するPostgreSQLのドキュメントを参照してください。
- class RemoveIndexConcurrently(model_name, name)
- RemoveIndex と同様ですが、
CONCURRENTLY
オプションを使用してインデックスを削除します。 このオプションを使用する際に注意すべきいくつかの注意事項があります。 PostgreSQLのドキュメントを参照してください。