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.")
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
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")
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")
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]
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]
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" )
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"