pgmigrate2 är ett Python verktyg som hjälper dig att utveckla din databas tillsammans med din ansökan.
Den grundläggande enheten i PGmigrate är en enda SQL snutt som heter patch.
Exempeldatabasen patch
& Nbsp; cat 000049_Added_index_on_CategorySlug.sql
--- Id: 89ccfca6-6851-11e1-99d8-a088b4e3b168
--- Författare: Serg
--- Memo: Inkom index på CategorySlug
--- Datum: 2012-03-07 14:32
CREATE UNIQUE INDEX catalog_category_slug_shop_id_slug
& Nbsp; ON catalog_category_slug
& Nbsp; ANVÄNDA btree
& Nbsp; (shop_id, kula);
Som ni kan se patch är en giltig SQL-fil, som till och med kan utföras direkt. Det har också trevligt, läsbar filnamn människa, och en del metadata.
Snabbstart
Initialisera databas
& Nbsp; pgmigrate2 init postgresql: // användare @ lösenord / testdb
Detta kommer att skapa tabellen __applied_patches__ i testdb. Denna tabell används för att spåra vilka patchar redan tillämpas.
Skapa en patch repa, och en första patch
& Nbsp; mkdir patchrepo
& Nbsp; pgmigrate2 newpatch patchrepo
... Redigera patch i din textredigerare ...
Skrev "patchrepo / 000001_creating_table_x.sql '
Detta kommer att skapa tomma patch och öppna den i ditt textredigerare. Ange patch SQL, och som tillval memo, som beskriver vad som är funktionen av denna patch.
PGmigrate kommer att skapa en fil som patchrepo / 000001_creating_table_x.sql där 000001 är en patch serienummer och creating_table_x är en slugified patch memo. PGmigrate kommer att fylla resten av patch metadata av sig själv.
Kontrollera vad som behöver tillämpas på
& Nbsp; pgmigrate2 check patchrepo / postgresql: // användare @ lösenord / testdb
Behöver ansöka: skapa tabellen x
Check tar alla patchar i patch reporäntan, och skriva ut en lista över patchar som måste tillämpas för testd.
Applicera patchar
& Nbsp; pgmigrate2 migrera patchrepo / postgresql: // användare @ lösenord / testdb
Behöver ansöka en patchar:
Tillämpa "skapa bord x '
Migrera tar alla patchar från patch reporäntan, och sekventiellt tillämpar de av dem, vars id inte är närvarande i __applied_patches__ tabellerna i testdb.
Bädda
Här är exempel på hur vi använder PGmigrate i vårt projekt:
### Databas migration kommandon
@ finaloption.command (config_opts)
def dbmigrate (config):
& Nbsp; från shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; från pgmigrate2 import api
& Nbsp; retur api.migrate ('migreringar ", config.db_uri)
@ finaloption.command (config_opts)
def dbnewpatch (config):
& Nbsp; från shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; från pgmigrate2 import api
& Nbsp; import delprocess
& nbsp; path = api.newpatch ("migreringar")
& Nbsp; om sökväg:
& Nbsp; subprocess.check_call ('hg lägga% s'% bana, shell = sant) # lägg just skapat patch till Mercurial
@ finaloption.command (config_opts)
def dbcheckstatus (config):
& Nbsp; från shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; från pgmigrate2 import api
& Nbsp; api.check_status ("migreringar", config.db_uri)
Krav :
- Python
Kommentarer hittades inte