Yoyo-migrasi adalah utilitas migrasi skema database menggunakan SQL polos dan DB-API.
Apa yoyo-migrasi lakukan?
Sebagai aplikasi database berevolusi, perubahan skema database sering diperlukan. Ini biasanya dapat ditulis sebagai satu-off script SQL yang mengandung MENCIPTAKAN / pernyataan ALTER table (meskipun setiap SQL atau python skrip dapat digunakan dengan yoyo-migrasi).
Yoyo-migrasi menyediakan alat baris perintah untuk membaca direktori skrip tersebut dan menerapkannya ke database Anda sesuai kebutuhan.
Database dukungan
PostgreSQL, MySQL dan SQLite database yang didukung.
Pemakaian
Yoyo-migrasi biasanya dipanggil sebagai script baris perintah.
Contoh:
Baca semua migrasi dari migrasi direktori dan menerapkannya ke database PostgreSQL:
yoyo-bermigrasi berlaku ./migrations/ postgres: // pengguna: password @ localhost / Database
Migrasi rollback sebelumnya diterapkan pada database MySQL:
yoyo-bermigrasi rollback ./migrations/ mysql: // pengguna: password @ localhost / Database
Mengajukan permohonan kembali (yaitu rollback lalu oleskan lagi) migrasi ke database SQLite di lokasi /home/sheila/important-data.db:
yoyo-bermigrasi sqlite permohonan kembali ./migrations/: ////home/sheila/important-data.db
Secara default, yoyo-migrasi dimulai dalam mode interaktif, mendorong Anda untuk setiap file migrasi sebelum mengaplikasikannya, sehingga mudah untuk memilih migrasi untuk menerapkan dan rollback.
Direktori migrasi harus berisi serangkaian skrip migrasi. Setiap skrip migrasi adalah file python (Py) yang berisi serangkaian langkah. Setiap langkah harus terdiri permintaan migrasi dan (opsional) query rollback. Sebagai contoh:
#
# File: migrasi / 0001.create-foo.py
#
Langkah (
& Nbsp; "CREATE TABLE foo (id INT, bar VARCHAR (20), PRIMARY KEY (id))",
& Nbsp; "DROP TABLE foo",
)
Nama file dari setiap file (tanpa ekstensi py) digunakan sebagai pengidentifikasi untuk setiap migrasi. Migrasi diterapkan dalam rangka nama file, sehingga berguna untuk nama file Anda menggunakan tanggal (misalnya '20090115-xyz.py') atau dengan nomor incrementing lain.
yoyo-bermigrasi menciptakan tabel dalam database target Anda, _yoyo_migration, untuk melacak migrasi telah diterapkan.
Langkah ini juga dapat mengambil ignore_errors argumen opsional, yang harus menjadi salah satu berlaku, rollback, atau semua. Jika pada contoh sebelumnya foo tabel mungkin telah dibuat dengan cara lain, kita bisa menambahkan ignore_errors = 'berlaku' untuk langkah untuk memungkinkan migrasi untuk melanjutkan terlepas:
#
# File: 0001.create-foo.py
#
Langkah (
& Nbsp; "CREATE TABLE foo (id INT, bar VARCHAR (20), PRIMARY KEY (id))",
& Nbsp; "DROP TABLE foo",
& Nbsp; ignore_errors = 'menerapkan',
)
Langkah ini juga dapat python benda callable yang mengambil koneksi database sebagai argumen tunggal mereka. Sebagai contoh:
#
# File: 0002.update_keys.py
#
def do_step (samb):
& Nbsp; kursor = conn.cursor ()
& Nbsp; cursor.execute (
& Nbsp; "INSERT INTO sysinfo"
& Nbsp; "(osname, hostname, rilis, versi, lengkungan)"
& Nbsp; "NILAI (% s,% s,% s,% s,% s% s)",
& Nbsp; os.uname ()
& Nbsp;)
Langkah (do_step)
Sandi keamanan
Anda biasanya menentukan username dan password database Anda sebagai bagian dari string koneksi database pada baris perintah. Pada mesin multi-user, pengguna lain bisa melihat password database Anda dalam daftar proses.
The -p atau --prompt-sandi bendera menyebabkan yoyo-bermigrasi untuk meminta password, mengabaikan password yang ditentukan dalam connection string. Password ini tidak akan tersedia untuk pengguna lain melalui daftar proses sistem.
Connection String caching
Pertama kali Anda menjalankan yoyo-bermigrasi pada set baru migrasi, Anda akan ditanya apakah Anda ingin cache string koneksi database dalam sebuah file bernama .yoyo-bermigrasi di direktori migrasi.
Cache ini adalah lokal ke direktori migrasi, sehingga berjalan berikutnya di set migrasi yang sama tidak perlu koneksi database string yang akan ditentukan.
Ini menghemat mengetik, menghindari database username dan password menunjukkan dalam daftar proses dan mengurangi risiko sengaja menjalankan yoyo-bermigrasi pada database yang salah (yaitu dengan kembali menjalankan entri yoyo-bermigrasi sebelumnya dalam sejarah perintah Anda ketika Anda telah pindah ke direktori yang berbeda).
Jika Anda tidak ingin file cache ini akan digunakan, tambahkan parameter --no-cache opsi baris perintah
Apa yang baru dalam rilis ini:.
- Fix untuk salah urus rilis 4.2.3
Apa yang baru dalam versi 4.2.1:
- Bugfix untuk rilis sebelumnya, yang dihilangkan file penting.
Apa yang baru dalam versi 4.1.6:
- Ditambahkan dukungan jendela (terima kasih kepada Peter Shinners)
Apa yang baru dalam versi 4.1.5:
- Konfigurasi penangan logging sehingga beralih penyebab v Output untuk pergi ke konsol (terima kasih kepada Andrew Nelis).
- `` -v`` saklar baris perintah tidak lagi membutuhkan sebuah argumen tapi mungkin beberapa kali ditentukan bukan (yaitu penggunaan `` -vvv`` bukan `` -v3``). `` --verbosity`` Mempertahankan perilaku lama.
Apa yang baru dalam versi 4.1.3:
- standar Berubah nama tabel migrasi kembali ke '_yoyo_migration'
Persyaratan :
- Python
Komentar tidak ditemukan