Browse Source

bug fix: schema specification in sql handling

Steve Nyemba 1 year ago
parent
commit
712c3d076d
2 changed files with 14 additions and 3 deletions
  1. 2 1
      setup.py
  2. 12 2
      transport/sql.py

+ 2 - 1
setup.py

@@ -4,11 +4,12 @@ This is a build file for the
 from setuptools import setup, find_packages
 import os
 import sys
+from transport import __version__
 def read(fname):
     return open(os.path.join(os.path.dirname(__file__), fname)).read() 
 args    = {
     "name":"data-transport",
-    "version":"1.7.6",
+    "version":__version__,
     "author":"The Phi Technology LLC","author_email":"info@the-phi.com",
     "license":"MIT",
     "packages":["transport"]}

+ 12 - 2
transport/sql.py

@@ -298,7 +298,17 @@ class SQLWriter(SQLRW,Writer):
             
         try:
             table = _args['table'] if 'table' in _args else self.table
-            self.schema = _args['schema'] if 'schema' in _args else self.schema
+            #
+            # In SQL, schema can stand for namespace or the structure of a table
+            # In case we have a list, we are likely dealing with table structure
+            #
+            if 'schema' in _args :
+                if type(_args['schema']) == str :
+                    self.schema = _args['schema'] if 'schema' in _args else self.schema
+                elif type(_args['schema']) == list:
+                    self.make(schema=_args['schema'])
+                    pass
+            # self.schema = _args['schema'] if 'schema' in _args else self.schema
             table = self._tablename(table)
             
             _sql = "INSERT INTO :table (:fields) VALUES (:values)".replace(":table",table) #.replace(":table",self.table).replace(":fields",_fields)
@@ -385,7 +395,7 @@ class BigQuery:
         try:
             if table :
                 _dataset = self.dataset if 'dataset' not in _args else _args['dataset']
-                sql = f"""SELECT column_name as field_name, data_type as field_type FROM {_dataset}.INFORMATION_SCHEMA.COLUMNS WHERE table_name = '{table}' """
+                sql = f"""SELECT column_name as name, data_type as type FROM {_dataset}.INFORMATION_SCHEMA.COLUMNS WHERE table_name = '{table}' """
                 return self.read(sql=sql).to_dict(orient='records')
                 # ref     = self.client.dataset(self.dataset).table(table)