Guest User

Untitled

a guest
Aug 12th, 2018
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. from django.core.management.base import BaseCommand
  2. from django.conf import settings
  3. from optparse import make_option
  4. import os
  5.  
  6. # default dump commands, you can overwrite these in your settings.
  7. 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')
  8. SQLITE3DUMP_CMD = getattr(settings, 'SQLITE3DUMP_CMD', 'echo ".dump" | sqlite3 %(database)s > %(filename)s')
  9.  
  10. class Command(BaseCommand):
  11. help = 'Complete dump of database of this project'
  12.  
  13. option_list = BaseCommand.option_list +(
  14. make_option("--database", help="Select database to dump"),
  15. )
  16.  
  17. def handle(self, *args, **options):
  18. if not args:
  19. print 'Write name of the outup file!\n'
  20. return
  21. else:
  22. filename = args[0]
  23.  
  24. database = self.get_database_settings(options['database'])
  25.  
  26. if database['ENGINE'].endswith('mysql'):
  27. cmd = MYSQLDUMP_CMD % dict(
  28. host = database['HOST'],
  29. port = database['PORT'],
  30. user = database['USER'],
  31. password = database['PASSWORD'],
  32. database = database['NAME'],
  33. filename = filename,
  34. )
  35. elif database['ENGINE'].endswith('sqlite3'):
  36. cmd = SQLITE3DUMP_CMD % dict(
  37. database = database['NAME'],
  38. filename = filename,
  39. )
  40. else:
  41. print "Sorry, dump_database only supports mysql and sqlite3 database backends.\n"
  42. return
  43.  
  44. os.system(cmd)
  45.  
  46.  
  47. def get_database_settings(self, database=None):
  48. if database:
  49. return settings.DATABASES[database]
  50.  
  51. try:
  52. return settings.DATABASES['default']
  53. except:
  54. return {
  55. 'ENGINE' : settings.DATABASE_ENGINE,
  56. 'NAME' : settings.DATABASE_NAME,
  57. 'USER' : settings.DATABASE_USER,
  58. 'PASSWORD' : settings.DATABASE_PASSWORD,
  59. 'HOST' : settings.DATABASE_HOST,
  60. 'PORT' : settings.DATABASE_PORT,
  61. }
Add Comment
Please, Sign In to add comment