diff --git a/mara_db/dbs.py b/mara_db/dbs.py index 39fecf8..fa89fbe 100644 --- a/mara_db/dbs.py +++ b/mara_db/dbs.py @@ -154,9 +154,18 @@ def __init__(self, host: str = None, port: int = None, database: str = None, @property def sqlalchemy_url(self): import urllib.parse + import importlib + port = self.port if self.port else 1433 - driver = self.odbc_driver.replace(' ','+') - return f'mssql+pyodbc://{self.user}:{urllib.parse.quote(self.password)}@{self.host}:{port}/{self.database}?driver={driver}' + + if importlib.util.find_spec("pyodbc"): + driver = self.odbc_driver.replace(' ','+') + return f'mssql+pyodbc://{self.user}:{urllib.parse.quote(self.password)}@{self.host}:{port}/{self.database}?driver={driver}' + + if importlib.util.find_spec("pymssql"): + return f'mssql+pymssql://{self.user}:{urllib.parse.quote(self.password)}@{self.host}:{port}/{self.database}' + + raise ValueError('You need either python module pyodbc or pymssql to use sqlalchemy with SQLServerDB.') class SqshSQLServerDB(SQLServerDB):