You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.3 KiB
Python
144 lines
5.3 KiB
Python
8 months ago
|
"""
|
||
|
This file encapsulates common operations associated with SQL databases via SQLAlchemy
|
||
|
|
||
|
"""
|
||
|
import sqlalchemy as sqa
|
||
8 months ago
|
def get_default_port(self) :
|
||
|
raise Exception ("default port needs to be set")
|
||
|
|
||
|
def _get_uri(self,**_args):
|
||
|
_host = self._host
|
||
|
_account = ''
|
||
|
if self._port :
|
||
|
_port = self._port
|
||
|
else:
|
||
|
_port = self.get_default_port()
|
||
|
|
||
|
_host = f'{_host}:{_port}'
|
||
|
|
||
|
if 'username' in _args :
|
||
|
_account = ''.join([_args['username'],':',_args['password'],'@'])
|
||
|
_database = self._database
|
||
|
_provider = self.get_provider().replace(':','').replace('/','')
|
||
|
# _uri = [f'{_provider}:/',_account,_host,_database]
|
||
|
# _uri = [_item.strip() for _item in _uri if _item.strip()]
|
||
|
# return '/'.join(_uri)
|
||
|
return f'{_provider}://{_host}/{_database}' if _account == '' else f'{_provider}://{_account}{_host}/{_database}'
|
||
|
|
||
|
class BaseReader(SQLBase):
|
||
|
def __init__(self,**_args):
|
||
|
super().__init__(**_args)
|
||
|
def read(self,**_args):
|
||
|
"""
|
||
|
This function will read a query or table from the specific database
|
||
|
"""
|
||
|
if 'sql' in _args :
|
||
|
sql = _args['sql']
|
||
|
else:
|