Opérations de migration de base de donnéesLien vers cette rubrique

Toutes ces opérations sont disponibles dans le module django.contrib.postgres.operations.

Création d’extension à l’aide des migrationsLien vers cette rubrique

Il est possible de créer une extension de base de données PostgreSQL en utilisant un fichier de migration. Cet exemple crée une extension hstore, mais le même principe est applicable aux autres extensions.

Configurer l’extension hstore dans PostgreSQL avant la première opération CreateModel ou AddField qui concerne un champ HStoreField en ajoutant une migration comprenant l’opération HStoreExtension. Par exemple :

Code
from django.contrib.postgres.operations import HStoreExtension

class Migration(migrations.Migration):
    ...

    operations = [
        HStoreExtension(),
        ...
    ]

L’opération omet l’ajout de l’extension si celle-ci existe déjà.

Pour la plupart des extensions, il est nécessaire que l’utilisateur de base de données possède les droits de superutilisateur. Si l’utilisateur de base de données Django ne possède pas les privilèges suffisants, il est alors nécessaire de créer l’extension en dehors des migrations Django avec un utilisateur qui possède ces droits. Dans ce cas, connectez-vous à la base de données et lancez la requête CREATE EXTENSION IF NOT EXISTS hstore;.

CreateExtensionLien vers cette rubrique

class CreateExtension(name)Lien vers cette définition

Une sous-classe d”Operation qui installe une extension PostgreSQL. Pour les extensions courantes, utilisez l’une des sous-classes plus spécifiques ci-dessous.

nameLien vers cette définition

Ce paramètre est obligatoire. Le nom de l’extension à installer.

BloomExtensionLien vers cette rubrique

class BloomExtensionLien vers cette définition

Installe l’extension bloom.

BtreeGinExtensionLien vers cette rubrique

class BtreeGinExtensionLien vers cette définition

Installe l’extension btree_gin.

BtreeGistExtensionLien vers cette rubrique

class BtreeGistExtensionLien vers cette définition

Installe l’extension btree_gist.

CITextExtensionLien vers cette rubrique

class CITextExtensionLien vers cette définition

Installe l’extension citext.

CryptoExtensionLien vers cette rubrique

class CryptoExtensionLien vers cette définition

Installe l’extension pgcrypto.

HStoreExtensionLien vers cette rubrique

class HStoreExtensionLien vers cette définition

Installe l’extension hstore et configure également la connexion afin d’interpréter les données hstore pour un usage possible dans les migrations suivantes.

TrigramExtensionLien vers cette rubrique

class TrigramExtensionLien vers cette définition

Installe l’extension pg_trgm.

UnaccentExtensionLien vers cette rubrique

class UnaccentExtensionLien vers cette définition

Installe l’extension unaccent.

Gestion des collations à l’aide des migrationsLien vers cette rubrique

Si vous avez besoin de filtrer ou de trier une colonne selon une collation particulière fournie par votre système d’exploitation mais pas par PostgreSQL, vous pouvez gérer les collations de votre base de données avec un fichier de migration. Ces collations peuvent ensuite être référencées dans le paramètre db_collation des champs CharField, TextField et de leurs sous-classes.

Par exemple, pour créer une collation pour le tri des annuaires téléphoniques allemands

Code
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)Lien vers cette définition

Crée une collation avec les paramètres name, locale et provider fournis.

Définissez le paramètre deterministic à False pour créer une collation non déterministe, par exemple pour le filtrage non sensible à la casse.

class RemoveCollation(name, locale, *, provider='libc', deterministic=True)Lien vers cette définition

Enlève les collations nommées name.

Lors de l’inversion de la migration, cette opération crée une collation avec les arguments locale, provider et deterministic indiqués. C’est pourquoi locale est obligatoire pour que l’opération puisse être réversible.

Opérations d’index concurrentesLien vers cette rubrique

PostgreSQL prend en charge l’option CONCURRENTLY pour les instructions CREATE INDEX et DROP INDEX pour ajouter et supprimer des index sans verrouiller les écritures. Cette option est utile pour l’ajout ou la suppression d’index dans une base de données active en production.

class AddIndexConcurrently(model_name, index)Lien vers cette définition

Comme AddIndex, mais crée un index avec l’option CONCURRENTLY. Il existe quelques mises en garde à respecter quand on utilise cette option, lisez la documentation PostgreSQL sur la construction concurrente d’index.

class RemoveIndexConcurrently(model_name, name)Lien vers cette définition

Comme RemoveIndex, mais supprime l’index avec l’option CONCURRENTLY. Il existe quelques mises en garde à respecter quand on utilise cette option, lisez la documentation PostgreSQL.