Browse Source

duckdb support

Steve Nyemba 11 months ago
parent
commit
c443c6c953
3 changed files with 24 additions and 3 deletions
  1. 2 2
      setup.py
  2. 1 1
      transport/sql/__init__.py
  3. 21 0
      transport/sql/duckdb.py

+ 2 - 2
setup.py

@@ -18,8 +18,8 @@ args    = {
     # "packages":["transport","info","transport/sql"]},
 
     "packages": find_packages(include=['info','transport', 'transport.*'])}
-args["keywords"]=['mongodb','couchdb','rabbitmq','file','read','write','s3','sqlite']
-args["install_requires"] = ['pyncclient','pymongo','sqlalchemy','pandas','typer','pandas-gbq','numpy','cloudant','pika','nzpy','boto3','boto','pyarrow','google-cloud-bigquery','google-cloud-bigquery-storage','flask-session','smart_open','botocore','psycopg2-binary','mysql-connector-python','numpy','pymssql']
+args["keywords"]=['mongodb','duckdb','couchdb','rabbitmq','file','read','write','s3','sqlite']
+args["install_requires"] = ['pyncclient','duckdb-engine','pymongo','sqlalchemy','pandas','typer','pandas-gbq','numpy','cloudant','pika','nzpy','boto3','boto','pyarrow','google-cloud-bigquery','google-cloud-bigquery-storage','flask-session','smart_open','botocore','psycopg2-binary','mysql-connector-python','numpy','pymssql']
 args["url"] =   "https://healthcareio.the-phi.com/git/code/transport.git"
 args['scripts'] = ['bin/transport']
 # if sys.version_info[0] == 2 :

+ 1 - 1
transport/sql/__init__.py

@@ -3,7 +3,7 @@ This namespace/package wrap the sql functionalities for a certain data-stores
     - netezza, postgresql, mysql and sqlite
     - mariadb, redshift (also included)
 """
-from . import postgresql, mysql, netezza, sqlite, sqlserver
+from . import postgresql, mysql, netezza, sqlite, sqlserver, duckdb
 
 
 #

+ 21 - 0
transport/sql/duckdb.py

@@ -0,0 +1,21 @@
+"""
+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):
+        self.database = _args['database']
+    def get_provider(self):
+        return "duckdb"
+    
+    def _get_uri(self,**_args):
+        return f"""duckdb:///{self.database}"""
+class Reader(Duck,BaseReader) :
+    def __init__(self,**_args):
+        Duck.__init__(self,**_args)
+        BaseReader.__init__(self,**_args)
+class Writer(Duck,BaseWriter):
+    def __init__(self,**_args):
+        Duck.__init__(self,**_args)
+        BaseWriter.__init__(self,**_args)