data-transport/transport/sql/duckdb.py

27 lines
888 B
Python
Raw Normal View History

2024-06-15 05:50:53 +00:00
"""
This module implements the handler for duckdb (in memory or not)
"""
from transport.sql.common import Base, BaseReader, BaseWriter
class Duck :
def __init__(self,**_args):
#
# duckdb with none as database will operate as an in-memory database
#
self.database = _args['database'] if 'database' in _args else ''
2024-06-15 05:50:53 +00:00
def get_provider(self):
return "duckdb"
def _get_uri(self,**_args):
return f"""duckdb:///{self.database}"""
class Reader(Duck,BaseReader) :
2025-02-20 05:03:14 +00:00
def __init__(self,**_args):
2024-06-15 05:50:53 +00:00
Duck.__init__(self,**_args)
BaseReader.__init__(self,**_args)
2025-02-20 05:03:14 +00:00
def _get_uri(self,**_args):
return super()._get_uri(**_args),{'connect_args':{'read_only':True}}
2024-06-15 05:50:53 +00:00
class Writer(Duck,BaseWriter):
def __init__(self,**_args):
Duck.__init__(self,**_args)
BaseWriter.__init__(self,**_args)