text: # -*- coding:utf-8 -*-
  import subprocess
  
  from django.db.backends.base.client import BaseDatabaseClient
  
  """
  启动mysql client:
      python manage.poy dbshell
  """
  class DatabaseClient(BaseDatabaseClient):
      executable_name = 'mysql'
  
      @classmethod
      def settings_to_cmd_args(cls, settings_dict):
          args = [cls.executable_name]
  
          db = settings_dict['OPTIONS'].get('db', settings_dict['NAME'])
          user = settings_dict['OPTIONS'].get('user', settings_dict['USER'])
          passwd = settings_dict['OPTIONS'].get('passwd', settings_dict['PASSWORD'])
          host = settings_dict['OPTIONS'].get('host', settings_dict['HOST'])
          port = settings_dict['OPTIONS'].get('port', settings_dict['PORT'])
          cert = settings_dict['OPTIONS'].get('ssl', {}).get('ca')
          defaults_file = settings_dict['OPTIONS'].get('read_default_file')
          # Seems to be no good way to set sql_mode with CLI.
  
          if defaults_file:
              args += ["--defaults-file=%s" % defaults_file]
          if user:
              args += ["--user=%s" % user]
          if passwd:
              args += ["--password=%s" % passwd]
          if host:
              if '/' in host:
                  args += ["--socket=%s" % host]
              else:
                  args += ["--host=%s" % host]
          if port:
              args += ["--port=%s" % port]
          if cert:
              args += ["--ssl-ca=%s" % cert]
          if db:
              args += [db]
          return args
  
      def runshell(self):
          args = DatabaseClient.settings_to_cmd_args(self.connection.settings_dict)
          subprocess.call(args)
  