From 712c3d076d6d5224a403cf5653550ce746abcb96 Mon Sep 17 00:00:00 2001 From: Steve Nyemba Date: Sun, 9 Jul 2023 16:32:05 -0500 Subject: [PATCH] bug fix: schema specification in sql handling --- setup.py | 3 ++- transport/sql.py | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/setup.py b/setup.py index 2b17e62..136082a 100644 --- a/setup.py +++ b/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"]} diff --git a/transport/sql.py b/transport/sql.py index 2977044..b387bcf 100644 --- a/transport/sql.py +++ b/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)