Açık Kaynak PlatformlarBilişim ProfesyonelleriMakaleWeb UygulamalarıYazılım Geliştirme

Flask MVC (Unit-8) Migration

Buraya kadar geldiyseniz artık bir flask projesi nasıl yapılır üç aşağı beş yukarı biliyorsunuz fakat eksik kalan bir bölüm daha var o da migration. Evet migration olmadan da dbFirst olarak projenizi yapabilirsiniz fakat ben code first yaklaşımı daha çok sevdiğim için bu projede migration kullandım isterseniz siz kendi projelerinizde kullanmayabilrsiniz fakal db first ile gittiğinizde db’de yaptığınız işlemlemleri modellerinize de yapamayı unutmayın fark olursa zaten SQLAlchemy ORM’u bu durumu size bildirecektir. İsterseniz ORM’da kullanmayabilirsiniz tabi :). Bu arada değinmekte fayda var Flask bir P.O.C. frameworktür çok request alacağınız productionlar için tavsiye edilmez. Ayrıca flask http sunucusu async olarak çalışmaz.

#migrate.py
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app, db


migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

Evet yukarıda migration için gerekli .py dosyasını görüyorsunuz. Migration için kullanılacak olan app ve db (app = Flask() ve db=SQLAlchemy(app) ) bilgilerini veriyoruz. Bu sayede migration ilgili app’den db’ye register edilmiş olan tüm db.Model sınıflarını otomatik olarak bulacak ve database structer işlemlerini sizin yerinize otomatik olarak yapacaktır. Migration için bu dosyayı oluşturduktan sonra command üzerinden bir kaç komut yazmamız icab ediyor.

python migrate.py db init
python migrate.py db migrate
python migrate.py db upgrade

Yukardaki satırlardan ini ve migrate işlemi ilk çalıştırmada upgrade ise her model değişiminde yapılmalıdır. Yukardaki satırları çalıştırdığımızda proje rootunda migrations klasörü oluşacak ve her db upgrade dediğimizde versions klasörü altında ilgili değişikliker script halinde otomatik oluşacaktır.

Projenizde çeşitli denemeler yapabilir migrationlarınız sıfırlamak isteyebilirsiniz. Bunun için gerekli command satırlarını aşağıda veriyorum. Test için ben bir çok kez kullanmıştım.

RMDIR "migrations" /S /Q
del data.db

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.