client.py 784 B

123456789101112131415161718192021222324252627
  1. import shutil
  2. from django.db.backends.base.client import BaseDatabaseClient
  3. class DatabaseClient(BaseDatabaseClient):
  4. executable_name = "sqlplus"
  5. wrapper_name = "rlwrap"
  6. @staticmethod
  7. def connect_string(settings_dict):
  8. from django.db.backends.oracle.utils import dsn
  9. return '%s/"%s"@%s' % (
  10. settings_dict["USER"],
  11. settings_dict["PASSWORD"],
  12. dsn(settings_dict),
  13. )
  14. @classmethod
  15. def settings_to_cmd_args_env(cls, settings_dict, parameters):
  16. args = [cls.executable_name, "-L", cls.connect_string(settings_dict)]
  17. wrapper_path = shutil.which(cls.wrapper_name)
  18. if wrapper_path:
  19. args = [wrapper_path, *args]
  20. args.extend(parameters)
  21. return args, None