Spaces:
Sleeping
Sleeping
File size: 1,218 Bytes
b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 b3eb06a 1d0f3f8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import sys
import duckdb
from duckdb import ParserException, SyntaxException, BinderException, CatalogException
def validate_query(query, schemas):
valid = True
msg = ""
try:
print("Running query: ", query)
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:
msg = str(e)
valid = False
except SyntaxException as e:
msg = str(e)
valid = False
except BinderException as e:
msg = str(e)
valid = False
except CatalogException as e:
msg = str(e)
if "but it exists" in msg and "extension" in msg:
valid = True
msg = ""
else:
valid = False
except Exception as e:
msg = str(e)
valid = True
return valid, msg
if __name__ == "__main__":
if len(sys.argv) > 2:
validate_query(sys.argv[1], sys.argv[2])
else:
print("No query provided.")
|