giriş hakkında SSS

Veritabanındaki bilgileri sileceğim fakat bilgileri yedeklemek ve gerektiğinde tekrar yüklemek istiyorum. Django da bunun yolu nedir?

10 Ekim '11 tarihinde soruldu

mco's gravatar image

mco
16668


Django da fixture denen yapılar kullanılabilir. Yedekleme yapmak için:

$python manage.py dumpdata [app] > dump.json

(burada app, hangi uygulamaya(application) ait modellerin bilgileri yedeklenecekse onun adı) => eğer arguman olarak --indent=2 verilirse formatlı yazıyor

veritabanına yükleme yapmak için:

$python manage.py loaddata dump.json

10 Ekim '11 tarihinde yanıtlandı

mco's gravatar image

mco
16668

10 Ekim '11 tarihinde düzenlendi

import os, popen2, time from django.core.management.base import BaseCommand

class Command(BaseCommand): help = "Mysql Yedekleme"

def handle(self, *args, **options):
    from django.db import connection
    from django.conf import settings

    self.engine = settings.DATABASE_ENGINE
    self.db = settings.DATABASE_NAME
    self.user = settings.DATABASE_USER
    self.passwd = settings.DATABASE_PASSWORD
    self.host = settings.DATABASE_HOST
    self.port = settings.DATABASE_PORT

    yedek_klasor = 'mysql_yedek'
    if not os.path.exists(yedek_klasor):
        os.makedirs(yedek_klasor)
    yeni_isim = os.path.join(yedek_klasor, 'yedek_%s.sql' % time.strftime('%y%m%d%S'))

    if self.engine == 'mysql':
        print '%s; %s ismi ile yedeklendi.' % (self.db, yeni_isim)
        self.yedek_baslat(yeni_isim)
    else:
        print '%s hata olustu' % self.engine

def yedek_baslat(self, yeni_isim):
    args = []
    if self.user:
        args += ["--user=%s" % self.user]
    if self.passwd:
        args += ["--password=%s" % self.passwd]
    if self.host:
        args += ["--host=%s" % self.host]
    if self.port:
        args += ["--port=%s" % self.port]
    args += [self.db]

    os.system('mysqldump %s > %s' % (' '.join(args), yeni_isim))

projeklasörü/management/commands/mysqlyedekle.py

olarak kaydedip.

./manage.py mysqlyedekle ./manage.py reset proje ./manage.py syncdb

yaparak çalıştırabilirsiniz...

14 Mart tarihinde yanıtlandı

musluyuksektepe's gravatar image

musluyuksektepe
11

Yanıtınız
önizlemeyi aç / kapat

Bu soruyu takip edin

E-posta ile:

Giriş yaptığınızda güncellemeleri buradan takip edebilirsiniz

RSS ile:

Cevaplar

Cevaplar ve Yorumlar

Share

Etiketler:

×1
×1
×1

10 Ekim '11 tarihinde soruldu

759 kere okundu

14 Mart tarihinde güncellendi

İlgili sorular