pgmigrate2 ay isang Python tool na tumutulong sa iyo na magbabago ang iyong database kasama ng iyong application.
Ang pangunahing yunit ng PGmigrate ay isang solong snippet SQL tinatawag patch.
Sample database patch
& Nbsp; pusa 000049_Added_index_on_CategorySlug.sql
--- Id: 89ccfca6-6851-11e1-99d8-a088b4e3b168
--- May-akda: serg
--- Memo: Idinagdag index sa CategorySlug
--- Petsa: 2012/03/07 14:32
LILIKHA NG NATATANGING INDEX catalog_category_slug_shop_id_slug
& Nbsp; SA catalog_category_slug
& Nbsp; PAGGAMIT btree
& Nbsp; (shop_id, pagong);
Tulad ng iyong nakikita patch ay isang wastong SQL file, na kahit na maaaring isagawa nang direkta. Mayroon din itong maganda, pantao nababasa pangalan ng file at ang ilan metadata.
Quickstart
Initialize database
& Nbsp; pgmigrate2 init postgresql: // user @ password / testdb
Ito ay bubuo ng talahanayan __applied_patches__ sa testdb. Ang table na ito ay ginagamit upang subaybayan kung aling mga patch ay apply na.
Lumikha ng patch repo, at isang unang patch
& Nbsp; mkdir patchrepo
& Nbsp; pgmigrate2 newpatch patchrepo
... I-edit ang patch sa iyong text editor ...
Isinulat 'patchrepo / 000001_creating_table_x.sql'
Lilikha ito ng walang laman patch at buksan ito sa iyong text editor. Ipasok ang patch SQL, at opsyonal na memo, na naglalarawan kung ano ang pag-andar ng patch na ito.
PGmigrate ay lumikha ng isang file tulad ng patchrepo / 000001_creating_table_x.sql kung saan 000,001 ay isang patch serial number, at creating_table_x ay isang slugified memo ng patch. PGmigrate ay punan natitirang bahagi ng patch metadata sa pamamagitan ng mismo.
Tingnan kung ano ang kailangang ilapat sa
& Nbsp; pgmigrate2 check patchrepo / postgresql: // user @ password / testdb
Kailangang mag-apply: sa paglikha ng talahanayan x
Check tumatagal ng lahat ng mga patch sa patch repo, at i-print ang isang listahan ng mga patch na kailangan upang ilapat sa testd.
Ilapat ang mga patch
& Nbsp; pgmigrate2 migrate patchrepo / postgresql: // user @ password / testdb
Kailangan mo upang ilapat 1 patch:
Paglalapat ng 'paglikha ng talahanayan x'
-Migrate tumatagal ng lahat ng mga patch patch mula sa repo, at sunud-sunod nalalapat ang mga sa mga ito, na ang id ay hindi naroroon sa __applied_patches__ mga talahanayan ng testdb.
embed
Narito ang halimbawa kung paano namin ginagamit PGmigrate sa aming proyekto:
### Mga utos ng paglilipat ng Database
@ Finaloption.command (config_opts)
def dbmigrate (config):
& Nbsp; mula shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; mula pgmigrate2 import api
& Nbsp; return api.migrate ('paglilipat', config.db_uri)
@ Finaloption.command (config_opts)
def dbnewpatch (config):
& Nbsp; mula shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; mula pgmigrate2 import api
& Nbsp; import subprocess
& Nbsp; landas = api.newpatch ('paglilipat')
& Nbsp; kung path:
& Nbsp; subprocess.check_call ('hg magdagdag ng% s'% path, shell = True) # magdadagdag nilikha lamang patch sa papalit-palit
@ Finaloption.command (config_opts)
def dbcheckstatus (config):
& Nbsp; mula shopium.core.config import read_config
& Nbsp; config = read_config (config)
& Nbsp; mula pgmigrate2 import api
& Nbsp; api.check_status ('paglilipat', config.db_uri)
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan