Alembic adalah utilitas baru migrasi database, yang ditulis oleh penulis SQLAlchemy & nbsp; Sebuah alat migrasi menawarkan fungsi berikut.:
- Bisa memancarkan pernyataan ALTER ke database untuk mengubah struktur tabel dan konstruksi lainnya
- Menyediakan sebuah sistem dimana "script migrasi" dapat dibangun; setiap script menunjukkan serangkaian tertentu langkah-langkah yang dapat "meng-upgrade" database target untuk versi baru, dan secara opsional serangkaian langkah-langkah yang dapat "downgrade" sama, melakukan langkah yang sama secara terbalik.
- Memungkinkan skrip untuk mengeksekusi dalam beberapa cara berurutan.
Tujuan Alembic adalah:
- Konfigurasi berakhir dan transparan sangat terbuka dan operasi. Lingkungan Alembic baru yang dihasilkan dari satu set template yang dipilih di antara satu set pilihan ketika setup pertama terjadi. Template kemudian menyimpan serangkaian script yang menentukan sepenuhnya bagaimana konektivitas database didirikan dan bagaimana skrip migrasi dipanggil; script migrasi itu sendiri dihasilkan dari template dalam yang serangkaian script. Script kemudian dapat lebih disesuaikan untuk menentukan bagaimana database akan berinteraksi dengan dan apa struktur file migrasi baru harus mengambil.
- Dukungan penuh untuk DDL transaksional. Script standar memastikan bahwa semua migrasi terjadi dalam transaksi - bagi mereka yang mendukung database ini (PostgreSQL, Microsoft SQL Server), migrasi dapat diuji dengan tidak perlu secara manual membatalkan perubahan pada kegagalan.
- Konstruksi skrip Minimalis. Operasi dasar seperti mengubah nama tabel / kolom, menambahkan / menghapus kolom, mengubah atribut kolom dapat dilakukan melalui satu baris perintah seperti alter_column (), rename_table (), add_constraint (). Tidak perlu untuk menciptakan SQLAlchemy penuh Tabel struktur untuk operasi sederhana seperti ini - fungsi sendiri menghasilkan struktur skema minimalis di belakang layar untuk mencapai urutan DDL yang diberikan.
- "Auto generasi" migrasi. Sementara migrasi dunia nyata jauh lebih kompleks daripada apa yang dapat secara otomatis ditentukan, Alembic masih bisa menghilangkan pekerjaan kasar awal dalam menghasilkan arahan migrasi baru dari skema berubah. Fitur --autogenerate akan memeriksa status database menggunakan kemampuan skema pemeriksaan SQLAlchemy itu, bandingkan dengan keadaan saat ini model database sebagaimana ditentukan dalam Python, dan menghasilkan serangkaian "calon" migrasi, membuat mereka menjadi migrasi baru naskah sebagai arahan Python. Pengembang kemudian mengedit file baru, menambahkan arahan tambahan dan migrasi data yang diperlukan, untuk menghasilkan migrasi selesai. Tabel dan tingkat kolom perubahan dapat dideteksi, dengan kendala dan indeks untuk mengikuti juga.
- Dukungan penuh untuk migrasi yang dihasilkan sebagai skrip SQL. Orang-orang yang bekerja di lingkungan perusahaan tahu bahwa akses langsung ke DDL perintah pada database produksi adalah hak istimewa yang langka, dan DBA ingin skrip SQL tekstual. Model penggunaan Alembic dan perintah yang berorientasi mampu menjalankan serangkaian migrasi ke file output tekstual semudah berjalan langsung ke database. Perawatan harus diambil dalam mode ini tidak memanggil operasi lain yang bergantung pada in-memory memilih baris - Alembic mencoba untuk memberikan pembantu konstruksi seperti bulk_insert () untuk membantu dengan operasi berorientasi data yang kompatibel dengan DDL script berbasis.
- Versi non-linear. Script diberi pengenal UUID mirip dengan DVCS, dan keterkaitan satu script ke yang berikutnya dicapai melalui penanda dalam script sendiri. Melalui mekanisme terbuka ini, cabang yang berisi skrip migrasi lain dapat digabungkan - hubungan dapat diedit secara manual dalam file script untuk membuat urutan baru.
- Menyediakan perpustakaan ALTER konstruksi yang dapat digunakan oleh aplikasi SQLAlchemy. DDL konstruksi membangun basis DDLElement SQLAlchemy sendiri dan dapat digunakan mandiri oleh setiap aplikasi atau script.
- Jangan merusak leher kami atas ketidakmampuan SQLite untuk ALTER hal. SQLite memiliki hampir tidak ada dukungan untuk perubahan tabel atau kolom. Ini adalah desain oleh pengembang SQLite, sehingga Alembic foregoes melaksanakan workarounds canggung dan buruk-fungsional untuk platform ini. Jika Anda serius tentang migrasi skema, menggunakan database yang sama serius!
Dokumentasi dan status Alembic di http://packages.python.org/alembic/.
Requirements:
- Python
Komentar tidak ditemukan