Spaces:
Sleeping
Sleeping
File size: 960 Bytes
82815c9 |
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 |
import base64
import duckdb
class Q(str):
UNSAFE = ["CREATE", "DELETE", "DROP", "INSERT", "UPDATE"]
def __init__(self, query: str):
self.is_safe = not any([cmd in query.upper() for cmd in self.UNSAFE])
def run(self, sql_engine=None):
try:
if sql_engine is None:
return self.run_duckdb()
else:
return self.run_sql(sql_engine)
except Exception as e:
pass
def run_duckdb(self):
return duckdb.sql(self)
def df(self, sql_engine=None):
result = self.run(sql_engine=sql_engine)
if result is None: return
result_df = result.df()
return result_df
@property
def base64(self):
return base64.b64encode(self.encode()).decode()
@classmethod
def from_base64(cls, b64):
"""Initializing from base64-encoded URL paths."""
return cls(base64.b64decode(b64).decode()) |