Exemplo n.º 1
0
 def show_sql(self, pretty_print=False, **params):
     q = self._get_query()
     sql = VulknSQLFormatter().format(q, **params) if params else q
     statements = vulkn.sql.SQLMessage(sql).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     return sqlformat(statements[0].optimize(), oneline=not pretty_print)
Exemplo n.º 2
0
 def exec(self, **params):
     q = self._get_query()
     statements = vulkn.sql.SQLMessage(VulknSQLFormatter().format(
         q, **params)).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     return self._ctx._conn.select(statements[0].optimize())
Exemplo n.º 3
0
 def plan(self, **params):
     q = self._get_query()
     statements = vulkn.sql.SQLMessage(VulknSQLFormatter().format(
         q, **params)).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     return QueryStringDataTable(self._ctx,
                                 statements[0].optimize()).select('*')
Exemplo n.º 4
0
 def cache(self, engine=None):
     if engine is None:
         engine = vulkn.engines.Memory()
     q = self._get_query()
     sql = VulknSQLFormatter().format(q, **self._params[0]) if self._params else q
     statements = vulkn.sql.SQLMessage(sql).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     t = self._ctx.session.cache(statements[0].optimize(), engine=engine)
     return BaseTableDataTable(self._ctx, *(t.split('.')))
Exemplo n.º 5
0
 def load(self, parts=None):
     from vulkn.types import c
     dt = SelectQueryDataTable(self._ctx, str(self)).all()
     if parts:
         dt = dt.where(c('_part').in_(parts))
     q = dt._get_query()
     sql = VulknSQLFormatter().format(q, **self._params[0]) if self._params else q
     statements = vulkn.sql.SQLMessage(sql).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     t = self._ctx.session.cache(statements[0].optimize(), engine=vulkn.engines.Memory())
     return BaseTableDataTable(self._ctx, *(t.split('.')))
Exemplo n.º 6
0
 def write(self, database, table, engine=None, mode=WriteMode.Create):
     table_exists = self._ctx.tableExists(database, table)
     if table_exists and mode == WriteMode.Create:
         raise Exception('Table exists and invalid write mode specified')
     if engine is None:
         engine = vulkn.engines.Memory()
     if mode != WriteMode.Append:
         self._ctx.dropTable(database, table)
     q = self._get_query()
     source = VulknSQLFormatter().format(q, **(self._params)) if self._params else q
     statements = vulkn.sql.SQLMessage(source).statements()
     if len(statements) > 1:
         raise Exception('More than one statement is not supported')
     sql = statements[0].optimize()
     if mode != WriteMode.Append:
         sql = f'CREATE TABLE {database}.{table} ENGINE = {engine} AS {sql}'
     else:
         sql = f'INSERT INTO {database}.{table} {sql}'
     if not self._ctx.exec(sql):
         raise Exception('Unable to write table')
     return SelectQueryDataTable(self._ctx, f'{database}.{table}').select('*')
Exemplo n.º 7
0
 def _show_sql(self, **params):
     q = self._get_query()
     sql = VulknSQLFormatter().format(q, **params) if params else q
     return sql