Django_Basic_Manufacturing_3/venv/Lib/site-packages/dbbackup/db/mysql.py
2025-08-22 17:05:22 +07:00

46 lines
1.7 KiB
Python

from dbbackup import utils
from .base import BaseCommandDBConnector
class MysqlDumpConnector(BaseCommandDBConnector):
"""
MySQL connector, creates dump with ``mysqldump`` and restore with
``mysql``.
"""
dump_cmd = "mysqldump"
restore_cmd = "mysql"
def _create_dump(self):
cmd = f"{self.dump_cmd} {self.settings['NAME']} --quick"
if self.settings.get("HOST"):
cmd += f" --host={self.settings['HOST']}"
if self.settings.get("PORT"):
cmd += f" --port={self.settings['PORT']}"
if self.settings.get("USER"):
cmd += f" --user={self.settings['USER']}"
if self.settings.get("PASSWORD"):
cmd += f" --password={utils.get_escaped_command_arg(self.settings['PASSWORD'])}"
for table in self.exclude:
cmd += f" --ignore-table={self.settings['NAME']}.{table}"
cmd = f"{self.dump_prefix} {cmd} {self.dump_suffix}"
stdout, stderr = self.run_command(cmd, env=self.dump_env)
return stdout
def _restore_dump(self, dump):
cmd = f"{self.restore_cmd} {self.settings['NAME']}"
if self.settings.get("HOST"):
cmd += f" --host={self.settings['HOST']}"
if self.settings.get("PORT"):
cmd += f" --port={self.settings['PORT']}"
if self.settings.get("USER"):
cmd += f" --user={self.settings['USER']}"
if self.settings.get("PASSWORD"):
cmd += f" --password={utils.get_escaped_command_arg(self.settings['PASSWORD'])}"
cmd = f"{self.restore_prefix} {cmd} {self.restore_suffix}"
stdout, stderr = self.run_command(cmd, stdin=dump, env=self.restore_env)
return stdout, stderr