DuckDB-NSQL-7B / validate_sql.py
tdoehmen's picture
updated validation
dcec0ff
raw
history blame
1.05 kB
import sys
import duckdb
from duckdb import ParserException, SyntaxException, BinderException, CatalogException
def validate_query(query, schemas):
try:
with duckdb.connect(
":memory:", config={"enable_external_access": False}
) as duckdb_conn:
# register schemas
for schema in schemas.split(";"):
duckdb_conn.execute(schema)
cursor = duckdb_conn.cursor()
cursor.execute(query)
except ParserException as e:
return str(e)
except SyntaxException as e:
return str(e)
except BinderException as e:
return str(e)
except CatalogException as e:
if not ("but it exists" in str(e) and "extension" in str(e)):
return str(e)
except Exception as e:
return None
return None
if __name__ == "__main__":
if len(sys.argv) > 2:
error = validate_query(sys.argv[1], sys.argv[2])
if error:
raise Exception(error)
else:
print("No query provided.")