Spaces:
Sleeping
Sleeping
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 | |
def base64(self): | |
return base64.b64encode(self.encode()).decode() | |
def from_base64(cls, b64): | |
"""Initializing from base64-encoded URL paths.""" | |
return cls(base64.b64decode(b64).decode()) |