2010-12-28 11 views
7

Üretimde, MySQL kullanan bir Django dağıtımım var.Django modelleri mysql'den sqlite'ye (veya herhangi iki veritabanı sistemi arasında) nasıl taşınır?

SQLite ile daha fazla geliştirme yapmak istiyorum, bu yüzden mevcut verilerimi bir SQLite veritabanına almak istiyorum. I

Genel bir MySQL dökümünü SQLite dönüştürmek için kabuk betiği here var, ancak benim için çalışmadı (görünüşe göre genel sorun kolay değil).

Bunu Django modellerini kullanarak yapmayı çok daha kolay bulmayı düşündüm. Bunu nasıl yapardın? Bunu yapacak herhangi bir betik var mı?

cevap

17

kullanımını

manage.py dumpdata > your_file.json 

üretim sistemi (docs) verileri dışa için:

0

Belki güney deneyin.

Sonra otomatik olarak çalıştırdığınızda yüklenecektir geliştirme sisteminde dosya taşımak ve/fikstürler ismi "initial_data.json" ile klasörüne

manage.py loaddata your_file.json 

Ayrıca your_app dosyayı koyabilirsiniz çalıştırın ve "yönetmek .py syncdb "(docs).

+0

güney şeması için en uygun gör göç, ithalat/ihracat verisi için değil –

+0

@mosta: güneydeki şema göçü özellikleri mükemmeldir, ancak güneyde iyi veri taşıma yetenekleri vardır. – mkelley33

1

yeni tabanına giriş, sen kopyalamak için neyi gibi yüklü app contenttypes

INSTALLED_APPS = (
    'django.contrib.contenttypes', 
) 

kullanın komut varsa:

from django.contrib.contenttypes.models import ContentType 

    def run(): 

     def do(Table): 
      if Table is not None: 
       table_objects = Table.objects.all() 
       for i in table_objects: 
        i.save(using='slave') 

     ContentType.objects.using('slave').all().delete() 

     for i in ContentType.objects.all(): 
      do(i.model_class()) 

tam manuel here

+0

Sanırım bir şeye bahsetmeyi unuttun. İşte benim için çalışılan şeyler 1) Doğru ayarların yapılmasını sağlayın (yani, hiçbir içerik türü eklenmediyse). sonra 'python manage.py syncdb --database slave' veya' python manage.py migrate --database slave'. 2) 'run() 'fonksiyonunu yazın. 3) 'python manage.py shell' den ya da django özel komutu oluşturun (https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/)[https://docs.djangoproject .com/tr/1.9/howto/custom-management-commands /] ve bunu kullanın. –

+0

İnanıyorum ki, bu diğer dbs ile de çalışacaktır. –

+0

Bu oldukça eski bir cevaptır. Son Django, 'dumpdata''nın daha iyi bir sürümüne sahiptir, bu nedenle DB'ler arasında geçiş yapmak için özel bir çözüm yapmanız gerekmez. – inoks

İlgili konular