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 :
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, hints=None)Lien vers cette définition
Une sous-classe d”
Operationqui 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.
- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
BloomExtensionLien vers cette rubrique
- class BloomExtension(hints=None)Lien vers cette définition
Installe l’extension
bloom.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
BtreeGinExtensionLien vers cette rubrique
- class BtreeGinExtension(hints=None)Lien vers cette définition
Installe l’extension
btree_gin.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
BtreeGistExtensionLien vers cette rubrique
- class BtreeGistExtension(hints=None)Lien vers cette définition
Installe l’extension
btree_gist.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
CITextExtensionLien vers cette rubrique
- class CITextExtension(hints=None)Lien vers cette définition
Installe l’extension
citext.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
CryptoExtensionLien vers cette rubrique
- class CryptoExtension(hints=None)Lien vers cette définition
Installe l’extension
pgcrypto.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
HStoreExtensionLien vers cette rubrique
- class HStoreExtension(hints=None)Lien vers cette définition
Installe l’extension
hstoreet configure également la connexion afin d’interpréter les données hstore pour un usage possible dans les migrations suivantes.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
TrigramExtensionLien vers cette rubrique
- class TrigramExtension(hints=None)Lien vers cette définition
Installe l’extension
pg_trgm.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
UnaccentExtensionLien vers cette rubrique
- class UnaccentExtension(hints=None)Lien vers cette définition
Installe l’extension
unaccent.- hintsLien vers cette définition
-
Le paramètre facultatif
hintssera transmis comme**hintsà la méthodeallow_migrate()des routeurs de base de données afin de les aider à prendre les décisions de routage.
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
from django.contrib.postgres.operations import CreateCollation
class Migration(migrations.Migration):
...
operations = [
CreateCollation(
"case_insensitive",
provider="icu",
locale="und-u-ks-level2",
deterministic=False,
),
...,
]
- class CreateCollation(name, locale, *, provider='libc', deterministic=True)Lien vers cette définition
Crée une collation avec les paramètres
name,localeetproviderfournis.Définissez le paramètre
deterministicàFalsepour 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,provideretdeterministicindiqués. C’est pourquoilocaleest 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’optionCONCURRENTLY. 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’optionCONCURRENTLY. Il existe quelques mises en garde à respecter quand on utilise cette option, lisez la documentation PostgreSQL.
Ajout de contraintes sans appliquer la validationLien vers cette rubrique
PostgreSQL prend en charge l’option NOT VALID avec l’instruction ADD CONSTRAINT afin d’ajouter des contraintes d’intégrité sans appliquer leur validation sur les lignes existantes. Cette option est pratique si vous souhaitez éviter le parcours potentiellement long de la table pour vérifier si toutes les lignes existantes respectent la contrainte.
Pour valider plus tard les contraintes d’intégrité créées avec l’option NOT VALID, utilisez l’opération ValidateConstraint.
Consultez la documentation PostgreSQL pour plus de détails.
- class AddConstraintNotValid(model_name, constraint)Lien vers cette définition
Comme
AddConstraint, mais évite de valider la contrainte pour les lignes existantes.
- class ValidateConstraint(model_name, name)Lien vers cette définition
Parcours la table et valide la contrainte d’intégrité donnée pour les lignes existantes.