import urllib import sqlalchemy import healthcareai.common.database_library_validators as hcai_db_library try: # Note we don't want to force pyodbc as a requirement import pyodbc pyodbc_is_loaded = True except ImportError: pyodbc_is_loaded = False try: # Note we don't want to force sqlite3 as a requirement import sqlite3 sqlite3_is_loaded = True except ImportError: sqlite3_is_loaded = False def build_mssql_trusted_connection_string(server, database): """ Given a server and database name, build a Trusted Connection MSSQL connection string """ return 'DRIVER={SQL Server Native Client 11.0};Server=' + server + ';Database=' + database + ';Trusted_Connection=yes;' def build_mysql_connection_string(server, database, userid, password): # TODO stub pass # return 'Server={};Database={};Uid={};Pwd={}; '.format(server, database, userid, password) def build_sqlite_engine(file_path): """ Build an sqlite engine. """ hcai_db_library.validate_sqlite3_is_loaded() engine = sqlite3.connect(file_path) return engine def build_sqlite_in_memory_connection_string(): # TODO stub pass # return 'Data Source=:memory:;Version=3;New=True;' def build_mssql_engine_using_trusted_connections(server, database): """ Given a server and database name, build a Trusted Connection MSSQL database engine. NOTE: Requires `pyodbc` Args: server (str): Server name database (str): Database name Returns: sqlalchemy.engine.base.Engine: an sqlalchemy connection engine """ hcai_db_library.validate_pyodbc_is_loaded() connection_string = build_mssql_trusted_connection_string(server, database) params = urllib.parse.quote_plus(connection_string) engine = sqlalchemy.create_engine("mssql+pyodbc:///?odbc_connect={}".format(params)) return engine