Migrering av databaserLink to this heading
Alla dessa operationer är tillgängliga från modulen django.contrib.postgres.operations.
Skapa tillägg med hjälp av migreringarLink to this heading
Du kan skapa ett PostgreSQL-tillägg i din databas med hjälp av en migreringsfil. Detta exempel skapar en hstore-förlängning, men samma principer gäller för andra tillägg.
Ställ in hstore-tillägget i PostgreSQL före den första CreateModel eller AddField -operationen som involverar HStoreField genom att lägga till en migrering med HStoreExtension -operationen. Till exempel:
from django.contrib.postgres.operations import HStoreExtension
class Migration(migrations.Migration):
...
operations = [HStoreExtension(), ...]
Operationen hoppar över att lägga till tillägget om det redan finns.
För de flesta tillägg kräver detta en databasanvändare med superanvändarrättigheter. Om Django-databasanvändaren inte har lämpliga privilegier måste du skapa tillägget utanför Django-migreringar med en användare som har dem. I så fall ansluter du till din Django-databas och kör frågan CREATE EXTENSION IF NOT EXISTS hstore;.
CreateExtensionLink to this heading
- class CreateExtension(name)Link to this definition
En `` Operation `` underklass som installerar en PostgreSQL-förlängning. För vanliga tillägg, använd en av de mer specifika underklasserna nedan.
- nameLink to this definition
Detta är ett obligatoriskt argument. Namnet på det tillägg som ska installeras.
BloomExtensionLink to this heading
- class BloomExtensionLink to this definition
Installerar tillägget
bloom.
BtreeGinExtensionLink to this heading
- class BtreeGinExtensionLink to this definition
Installerar tillägget
btree_gin.
BtreeGistExtensionLink to this heading
- class BtreeGistExtensionLink to this definition
Installerar tillägget
btree_gist.
CITextExtensionLink to this heading
- class CITextExtensionLink to this definition
Installerar tillägget
citext.
CryptoExtensionLink to this heading
- class CryptoExtensionLink to this definition
Installerar tillägget
pgcrypto.
HStoreExtensionLink to this heading
- class HStoreExtensionLink to this definition
Installerar tillägget
hstoreoch konfigurerar även anslutningen för att tolka hstore-data för eventuell användning i efterföljande migreringar.
TrigramExtensionLink to this heading
- class TrigramExtensionLink to this definition
Installerar tillägget
pg_trgm.
UnaccentExtensionLink to this heading
- class UnaccentExtensionLink to this definition
Installerar tillägget
unaccent.
Hantera kollationer med hjälp av migreringarLink to this heading
Om du behöver filtrera eller beställa en kolumn med en viss kollationering som ditt operativsystem tillhandahåller men PostgreSQL inte gör det, kan du hantera kollationer i din databas med hjälp av en migreringsfil. Dessa kollationer kan sedan användas med parametern db_collation på CharField, TextField, och deras underklasser.
Till exempel:, för att skapa en kollationering för tysk telefonkatalogbeställning:
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)Link to this definition
Skapar en kollationering med de angivna
name,localeochprovider.Sätt parametern
deterministictillFalseför att skapa en icke-deterministisk kollationering, t.ex. för skiftlägesokänslig filtrering.
- class RemoveCollation(name, locale, *, provider='libc', deterministic=True)Link to this definition
Tar bort de kollationer som heter
namn.När den reverseras skapar detta en kollationering med de angivna argumenten
locale,providerochdeterministic. Därför krävslocaleför att göra denna operation reversibel.
Samtidiga indexoperationerLink to this heading
PostgreSQL stöder alternativet CONCURRENTLY till CREATE INDEX och DROP INDEX uttalanden för att lägga till och ta bort index utan att låsa ut skrivningar. Det här alternativet är användbart för att lägga till eller ta bort ett index i en live produktionsdatabas.
- class AddIndexConcurrently(model_name, index)Link to this definition
Som
AddIndex, men skapar ett index med alternativetCONCURRENTLY. Detta har några försiktighetsåtgärder att vara medveten om när du använder det här alternativet, se `` PostgreSQL-dokumentationen för att bygga index samtidigt <https://www.postgresql.org/docs/current/ sql-createindex.html#SQL-CREATEINDEX-CONCURRENTLY>`_.
- class RemoveIndexConcurrently(model_name, name)Link to this definition
Som
RemoveIndex, men tar bort indexet med alternativetCONCURRENTLY. Detta har några varningar att vara medvetna om när du använder det här alternativet, se PostgreSQL-dokumentationen.
Lägga till begränsningar utan att tvinga fram valideringLink to this heading
PostgreSQL stöder alternativet `` INOT VALID`` med uttalandet `` ADD CONSTRAINT`` för att lägga till kontrollbegränsningar utan att genomdriva validering på befintliga rader. Det här alternativet är användbart om du vill hoppa över den potentiellt långa genomsökningen av tabellen för att verifiera att alla befintliga rader uppfyller begränsningen.
Om du vill validera kontrollbegränsningar som skapats med alternativet NOT VALID vid en senare tidpunkt använder du operationen ValidateConstraint.
Se ”PostgreSQL-dokumentationen <https://www.postgresql.org/docs/current/ sql-altertable.html#SQL-ALTERTABLE-NOTES>`__ för mer information.
- class AddConstraintNotValid(model_name, constraint)Link to this definition
Som
AddConstraint, men undviker att validera begränsningen på befintliga rader.
- class ValidateConstraint(model_name, name)Link to this definition
Skannar igenom tabellen och validerar den angivna kontrollbegränsningen på befintliga rader.