Exemple #1
0
 def __require_local_server(self):
     if self.db_host != _LOCAL_SERVER:
         raise DependencyError(
             "db_host",
             "This operation does not support remote servers due to backup file "
             "location requirements. You must omit db_host from your configuration "
             "and run pynonymizer on the same server as the database.")
Exemple #2
0
    def __init__(self,
                 db_host,
                 db_user,
                 db_pass,
                 db_name,
                 db_port=None,
                 seed_rows=None,
                 backup_compression=False,
                 driver=None):
        # import here for fast-failiness
        import pyodbc

        if db_host is not None:
            raise DependencyError(
                "db_host",
                "MsSqlProvider does not support remote servers due to backup file "
                "location requirements. You must omit db_host from your configuration "
                "and run pynonymizer on the same server as the database.")

        # TODO: The odbc port syntax doesn't seem to work with (local),1433 or port=1433
        # TODO: This needs attention, but as it's backwards compatible, we're going to disallow it here.
        if db_port is not None:
            raise DependencyError(
                "db_port",
                "MsSqlProvider does not support custom ports. You must omit db_port "
                "from your configuration to continue.")

        if driver is None:
            self.__driver = self.__detect_driver()
        else:
            self.__driver = driver

        db_host = "(local)"

        super().__init__(db_host=db_host,
                         db_user=db_user,
                         db_pass=db_pass,
                         db_name=db_name,
                         db_port=db_port,
                         seed_rows=seed_rows)
        self.__conn = None
        self.__db_conn = None
        self.__backup_compression = backup_compression
Exemple #3
0
    def __init__(self, db_host, db_user, db_pass, db_name, db_port="3306"):
        self.db_host = db_host
        self.db_user = db_user
        self.db_pass = db_pass
        self.db_name = db_name
        self.db_port = db_port

        if not (shutil.which("mysql")):
            raise DependencyError(
                "mysql", "The 'mysql' client must be present in the $PATH")
Exemple #4
0
    def __init__(self, db_host, db_user, db_pass, db_name, db_port="5432"):
        self.db_host = db_host
        self.db_user = db_user
        self.db_pass = db_pass
        self.db_name = db_name
        self.db_port = db_port

        if not (shutil.which("pg_dump")):
            raise DependencyError(
                "pg_dump", "The 'pg_dump' client must be present in the $PATH")
Exemple #5
0
    def __detect_driver(self):
        import pyodbc
        ms_drivers = [i for i in pyodbc.drivers() if "sql server" in i.lower()]
        if len(ms_drivers) < 1:
            raise DependencyError(
                "Failed to detect any ODBC drivers on this system.")

        if len(ms_drivers) > 1:
            self.logger.warning("multiple drivers detected for mssql: %s",
                                ms_drivers)

        return ms_drivers[0]
Exemple #6
0
    def __detect_driver(self):
        import pyodbc

        ms_drivers = [i for i in pyodbc.drivers() if "sql server" in i.lower()]
        if len(ms_drivers) < 1:
            raise DependencyError(
                "odbc", "Failed to detect any ODBC drivers on this system."
            )

        if len(ms_drivers) > 1:
            self.logger.debug("multiple drivers detected for mssql: %s", ms_drivers)

        # Sort by the highest number (like, ODBC driver 14 for SQL server)
        return sorted(ms_drivers, key=_extract_driver_version, reverse=True)[0]
Exemple #7
0
    def __init__(
        self, db_host, db_user, db_pass, db_name, db_port="5432", additional_opts=""
    ):
        self.db_host = db_host
        self.db_user = db_user
        self.db_pass = db_pass
        self.db_name = db_name
        self.db_port = db_port
        self.additional_opts = shlex.split(additional_opts)

        if not (shutil.which("pg_dump")):
            raise DependencyError(
                "pg_dump", "The 'pg_dump' client must be present in the $PATH"
            )
Exemple #8
0
    def __init__(self,
                 db_host,
                 db_user,
                 db_pass,
                 db_name,
                 db_port="3306",
                 additional_opts=""):
        self.db_host = db_host
        self.db_user = db_user
        self.db_pass = db_pass
        self.db_name = db_name
        self.db_port = db_port
        self.additional_opts = shlex.split(additional_opts)
        self.process = None

        if not (shutil.which("mysql")):
            raise DependencyError(
                "mysql", "The 'mysql' client must be present in the $PATH")
def test_dependency_error():
    error = DependencyError("mysqldump", "error message")
    assert error.name == "mysqldump"