データベース移行操作—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/contrib/postgres/operations
移動先:案内検索

データベース移行操作

これらの操作はすべて、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;を実行します。

バージョン3.2で変更:古いバージョンでは、拡張機能の存在はチェックされません。


CreateExtension

class CreateExtension(name)
PostgreSQL拡張機能をインストールするOperationサブクラス。 一般的な拡張機能については、以下のより具体的なサブクラスの1つを使用してください。
name
これは必須の引数です。 インストールする拡張機能の名前。


BloomExtension

class BloomExtension

バージョン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拡張機能をインストールします。


移行を使用した照合の管理

バージョン3.2の新機能。


オペレーティングシステムが提供する特定の照合を使用して列をフィルタリングまたは順序付けする必要があるが、PostgreSQLは提供しない場合は、移行ファイルを使用してデータベース内の照合を管理できます。 これらの照合は、 CharFieldTextField 、およびそれらのサブクラスのdb_collationパラメーターで使用できます。

たとえば、ドイツの電話帳注文の照合を作成するには、次のようにします。

from django.contrib.postgres.operations import CreateCollation

class Migration(migrations.Migration):
    ...

    operations = [
        CreateCollation(
            'german_phonebook',
            provider='icu',
            locale='und-u-ks-level2',
        ),
        ...
    ]
class CreateCollation(name, locale, *, provider='libc', deterministic=True)

指定されたnamelocale、およびproviderとの照合を作成します。

deterministicパラメーターをFalseに設定して、大文字と小文字を区別しないフィルタリングなど、非決定論的な照合を作成します。

class RemoveCollation(name, locale, *, provider='libc', deterministic=True)

nameという名前の照合を削除します。

逆にすると、これは、提供されたlocaleprovider、およびdeterministic引数との照合を作成します。 したがって、この操作を元に戻すには、localeが必要です。

制限

PostgreSQL 9.6は、'libc'プロバイダーのみをサポートします。

非決定論的照合は、PostgreSQL12以降でのみサポートされます。


並行インデックス操作

PostgreSQLは、CREATE INDEXおよびDROP INDEXステートメントのCONCURRENTLYオプションをサポートして、書き込みをロックアウトせずにインデックスを追加および削除します。 このオプションは、実稼働データベースでインデックスを追加または削除する場合に役立ちます。

class AddIndexConcurrently(model_name, index)
AddIndex と同様ですが、CONCURRENTLYオプションを使用してインデックスを作成します。 これには、このオプションを使用するときに注意すべきいくつかの注意事項があります。インデックスの同時構築に関するPostgreSQLのドキュメントを参照してください。
class RemoveIndexConcurrently(model_name, name)
RemoveIndex と同様ですが、CONCURRENTLYオプションを使用してインデックスを削除します。 このオプションを使用する際に注意すべきいくつかの注意事項があります。 PostgreSQLのドキュメントを参照してください。

ノート

CONCURRENTLYオプションは、トランザクション内ではサポートされていません(非アトミック移行を参照)。