Skip to content

Commit 1ad32da

Browse files
committed
optional use of pymssql for SQL Server
1 parent 7482512 commit 1ad32da

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

mara_db/dbs.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,18 @@ def __init__(self, host: str = None, port: int = None, database: str = None,
154154
@property
155155
def sqlalchemy_url(self):
156156
import urllib.parse
157+
import importlib
158+
157159
port = self.port if self.port else 1433
158-
driver = self.odbc_driver.replace(' ','+')
159-
return f'mssql+pyodbc://{self.user}:{urllib.parse.quote(self.password)}@{self.host}:{port}/{self.database}?driver={driver}'
160+
161+
if importlib.util.find_spec("pyodbc"):
162+
driver = self.odbc_driver.replace(' ','+')
163+
return f'mssql+pyodbc://{self.user}:{urllib.parse.quote(self.password)}@{self.host}:{port}/{self.database}?driver={driver}'
164+
165+
if importlib.util.find_spec("pymssql"):
166+
return f'mssql+pymssql://{self.db.user}:{urllib.parse.quote(self.db.password)}@{self.db.host}:{port}/{self.db.database}'
167+
168+
raise ValueError('You need either python module pyodbc or pymssql to use sqlalchemy with SQLServerDB.')
160169

161170

162171
class SqshSQLServerDB(SQLServerDB):

0 commit comments

Comments
 (0)