Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.core.management.base import BaseCommand
- from django.conf import settings
- from optparse import make_option
- import os
- # default dump commands, you can overwrite these in your settings.
- MYSQLDUMP_CMD = getattr(settings, 'MYSQLDUMP_CMD', 'mysqldump --host=%(host)s --port=%(port)s --opt --complete-insert --compact --skip-add-locks -u"%(user)s" -p"%(password)s" %(database)s > %(filename)s')
- SQLITE3DUMP_CMD = getattr(settings, 'SQLITE3DUMP_CMD', 'echo ".dump" | sqlite3 %(database)s > %(filename)s')
- class Command(BaseCommand):
- help = 'Complete dump of database of this project'
- option_list = BaseCommand.option_list +(
- make_option("--database", help="Select database to dump"),
- )
- def handle(self, *args, **options):
- if not args:
- print 'Write name of the outup file!\n'
- return
- else:
- filename = args[0]
- database = self.get_database_settings(options['database'])
- if database['ENGINE'].endswith('mysql'):
- cmd = MYSQLDUMP_CMD % dict(
- host = database['HOST'],
- port = database['PORT'],
- user = database['USER'],
- password = database['PASSWORD'],
- database = database['NAME'],
- filename = filename,
- )
- elif database['ENGINE'].endswith('sqlite3'):
- cmd = SQLITE3DUMP_CMD % dict(
- database = database['NAME'],
- filename = filename,
- )
- else:
- print "Sorry, dump_database only supports mysql and sqlite3 database backends.\n"
- return
- os.system(cmd)
- def get_database_settings(self, database=None):
- if database:
- return settings.DATABASES[database]
- try:
- return settings.DATABASES['default']
- except:
- return {
- 'ENGINE' : settings.DATABASE_ENGINE,
- 'NAME' : settings.DATABASE_NAME,
- 'USER' : settings.DATABASE_USER,
- 'PASSWORD' : settings.DATABASE_PASSWORD,
- 'HOST' : settings.DATABASE_HOST,
- 'PORT' : settings.DATABASE_PORT,
- }
Add Comment
Please, Sign In to add comment