Source code for carepoint.db.db

# -*- coding: utf-8 -*-
# Copyright 2016-TODAY LasLabs Inc.
# License MIT (https://opensource.org/licenses/MIT).

from sqlalchemy import create_engine
from urllib import quote_plus as urlquote


[docs]class Db(object): ''' Base db connector object ''' ODBC_DRIVER = 'FreeTDS&TDS_VERSION=8.0' SQLITE = 'sqlite' def __new__( self, server=None, user=None, passwd=None, db=None, port=1433, drv=ODBC_DRIVER, **engine_args ): """ It establishes a new database connection and returns engine Args: server (str): IP or Hostname to database user (str): Username for database passwd (str): Password for database db (str): Name of database port (int): Connection port drv (str): Name of underlying database driver for connection **engine_args (mixed): Kwargs to pass to ``create_engine`` Return: sqlalchemy.engine.Engine """ if drv != self.SQLITE: params = { 'usr': urlquote(user), 'pass': urlquote(passwd), 'srv': server, 'drv': drv, 'db': db, 'prt': port, } dsn = 'mssql+pyodbc://{usr}:{pass}@{srv}:{prt}/{db}?driver={drv}' return create_engine(dsn.format(**params), **engine_args) else: return create_engine('%s://' % self.SQLITE, **engine_args)