Python sqlparse.sql.Statement() Examples
The following are 10
code examples of sqlparse.sql.Statement().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sqlparse.sql
, or try the search function
.
Example #1
Source File: filters.py From codenn with MIT License | 6 votes |
def process(self, stack, stmt): if isinstance(stmt, sql.Statement): self._curr_stmt = stmt self._process(stmt) if isinstance(stmt, sql.Statement): if self._last_stmt is not None: if unicode(self._last_stmt).endswith('\n'): nl = '\n' else: nl = '\n\n' stmt.tokens.insert( 0, sql.Token(T.Whitespace, nl)) if self._last_stmt != stmt: self._last_stmt = stmt # FIXME: Doesn't work ;)
Example #2
Source File: filters.py From uroboroSQL-formatter with BSD 3-Clause "New" or "Revised" License | 6 votes |
def process(self, stack, stmt): if isinstance(stmt, sql.Statement): self._curr_stmt = stmt self._process(stmt) if isinstance(stmt, sql.Statement): if self._last_stmt is not None: if str(self._last_stmt).endswith('\n'): nl = '\n' else: nl = '\n\n' stmt.tokens.insert( 0, sql.Token(T.Whitespace, nl)) if self._last_stmt != stmt: self._last_stmt = stmt # FIXME: Doesn't work ;)
Example #3
Source File: search_utils.py From mlflow with Apache License 2.0 | 6 votes |
def parse_search_filter(cls, filter_string): if not filter_string: return [] try: parsed = sqlparse.parse(filter_string) except Exception: raise MlflowException("Error on parsing filter '%s'" % filter_string, error_code=INVALID_PARAMETER_VALUE) if len(parsed) == 0 or not isinstance(parsed[0], Statement): raise MlflowException("Invalid filter '%s'. Could not be parsed." % filter_string, error_code=INVALID_PARAMETER_VALUE) elif len(parsed) > 1: raise MlflowException("Search filter contained multiple expression '%s'. " "Provide AND-ed expression list." % filter_string, error_code=INVALID_PARAMETER_VALUE) return SearchUtils._process_statement(parsed[0])
Example #4
Source File: search_utils.py From mlflow with Apache License 2.0 | 6 votes |
def _validate_order_by_and_generate_token(cls, order_by): try: parsed = sqlparse.parse(order_by) except Exception: raise MlflowException(f"Error on parsing order_by clause '{order_by}'", error_code=INVALID_PARAMETER_VALUE) if len(parsed) != 1 or not isinstance(parsed[0], Statement): raise MlflowException(f"Invalid order_by clause '{order_by}'. Could not be parsed.", error_code=INVALID_PARAMETER_VALUE) statement = parsed[0] if len(statement.tokens) == 1 and isinstance(statement[0], Identifier): token_value = statement.tokens[0].value elif len(statement.tokens) == 1 and \ statement.tokens[0].match(ttype=TokenType.Keyword, values=[cls.ORDER_BY_KEY_TIMESTAMP]): token_value = cls.ORDER_BY_KEY_TIMESTAMP elif statement.tokens[0].match(ttype=TokenType.Keyword, values=[cls.ORDER_BY_KEY_TIMESTAMP])\ and all([token.is_whitespace for token in statement.tokens[1:-1]])\ and statement.tokens[-1].ttype == TokenType.Keyword.Order: token_value = cls.ORDER_BY_KEY_TIMESTAMP + ' ' + statement.tokens[-1].value else: raise MlflowException(f"Invalid order_by clause '{order_by}'. Could not be parsed.", error_code=INVALID_PARAMETER_VALUE) return token_value
Example #5
Source File: statement_splitter.py From SublimeText-SQLTools with GNU General Public License v3.0 | 5 votes |
def process(self, stream): """Process the stream""" EOS_TTYPE = T.Whitespace, T.Comment.Single # Run over all stream tokens for ttype, value in stream: # Yield token if we finished a statement and there's no whitespaces # It will count newline token as a non whitespace. In this context # whitespace ignores newlines. # why don't multi line comments also count? if self.consume_ws and ttype not in EOS_TTYPE: yield sql.Statement(self.tokens) # Reset filter and prepare to process next statement self._reset() # Change current split level (increase, decrease or remain equal) self.level += self._change_splitlevel(ttype, value) # Append the token to the current statement self.tokens.append(sql.Token(ttype, value)) # Check if we get the end of a statement if self.level <= 0 and ttype is T.Punctuation and value == ';': self.consume_ws = True # Yield pending statement (if any) if self.tokens: yield sql.Statement(self.tokens)
Example #6
Source File: filter.py From codenn with MIT License | 5 votes |
def process(self, stack, stream): "Process the stream" consume_ws = False splitlevel = 0 stmt = None stmt_tokens = [] # Run over all stream tokens for ttype, value in stream: # Yield token if we finished a statement and there's no whitespaces if consume_ws and ttype not in (T.Whitespace, T.Comment.Single): stmt.tokens = stmt_tokens yield stmt # Reset filter and prepare to process next statement self._reset() consume_ws = False splitlevel = 0 stmt = None # Create a new statement if we are not currently in one of them if stmt is None: stmt = Statement() stmt_tokens = [] # Change current split level (increase, decrease or remain equal) splitlevel += self._change_splitlevel(ttype, value) # Append the token to the current statement stmt_tokens.append(Token(ttype, value)) # Check if we get the end of a statement if splitlevel <= 0 and ttype is T.Punctuation and value == ';': consume_ws = True # Yield pending statement (if any) if stmt is not None: stmt.tokens = stmt_tokens yield stmt
Example #7
Source File: test_regressions.py From codenn with MIT License | 5 votes |
def test_issue9(self): # make sure where doesn't consume parenthesis p = sqlparse.parse('(where 1)')[0] self.assert_(isinstance(p, sql.Statement)) self.assertEqual(len(p.tokens), 1) self.assert_(isinstance(p.tokens[0], sql.Parenthesis)) prt = p.tokens[0] self.assertEqual(len(prt.tokens), 3) self.assertEqual(prt.tokens[0].ttype, T.Punctuation) self.assertEqual(prt.tokens[-1].ttype, T.Punctuation)
Example #8
Source File: filter.py From uroboroSQL-formatter with BSD 3-Clause "New" or "Revised" License | 5 votes |
def process(self, stack, stream): "Process the stream" consume_ws = False splitlevel = 0 stmt = None stmt_tokens = [] # Run over all stream tokens for ttype, value in stream: # Yield token if we finished a statement and there's no whitespaces if consume_ws and ttype not in (T.Whitespace, T.Comment.Single): stmt.tokens = stmt_tokens yield stmt # Reset filter and prepare to process next statement self._reset() consume_ws = False splitlevel = 0 stmt = None # Create a new statement if we are not currently in one of them if stmt is None: stmt = Statement() stmt_tokens = [] # Change current split level (increase, decrease or remain equal) splitlevel += self._change_splitlevel(ttype, value) # Append the token to the current statement stmt_tokens.append(Token(ttype, value)) # Check if we get the end of a statement if splitlevel <= 0 and ttype is T.Punctuation and value == ';': consume_ws = True # Yield pending statement (if any) if stmt is not None: stmt.tokens = stmt_tokens yield stmt
Example #9
Source File: search_utils.py From mlflow with Apache License 2.0 | 5 votes |
def _parse_filter_for_model_registry(cls, filter_string, valid_search_keys): if not filter_string or filter_string == "": return [] expected = "Expected search filter with single comparison operator. e.g. name='myModelName'" try: parsed = sqlparse.parse(filter_string) except Exception: raise MlflowException("Error while parsing filter '%s'. %s" % (filter_string, expected), error_code=INVALID_PARAMETER_VALUE) if len(parsed) == 0 or not isinstance(parsed[0], Statement): raise MlflowException("Invalid filter '%s'. Could not be parsed. %s" % (filter_string, expected), error_code=INVALID_PARAMETER_VALUE) elif len(parsed) > 1: raise MlflowException("Search filter '%s' contains multiple expressions. " "%s " % (filter_string, expected), error_code=INVALID_PARAMETER_VALUE) statement = parsed[0] invalids = list(filter(cls._invalid_statement_token, statement.tokens)) if len(invalids) > 0: invalid_clauses = ", ".join("'%s'" % token for token in invalids) raise MlflowException("Invalid clause(s) in filter string: %s. " "%s" % (invalid_clauses, expected), error_code=INVALID_PARAMETER_VALUE) return [cls._get_comparison_for_model_registry( si, valid_search_keys) for si in statement.tokens if isinstance(si, Comparison)]
Example #10
Source File: sql_tokens.py From djongo with GNU Affero General Public License v3.0 | 5 votes |
def __init__(self, statement: U[Statement, Token]): self._statement = statement self._tok_id = 0 self._gen_inst = self._generator()