''' Created on 17/05/2012 @author: piranna Several utility functions to extract info from the SQL sentences ''' from sqlparse.filters import ColumnsSelect, Limit from sqlparse.pipeline import Pipeline from sqlparse.tokens import Keyword, Whitespace def getlimit(stream): """Function that return the LIMIT of a input SQL """ pipe = Pipeline() pipe.append(Limit()) result = pipe(stream) try: return int(result) except ValueError: return result def getcolumns(stream): """Function that return the colums of a SELECT query""" pipe = Pipeline() pipe.append(ColumnsSelect()) return pipe(stream) class IsType(object): """Functor that return is the statement is of a specific type""" def __init__(self, type): self.type = type def __call__(self, stream): for token_type, value in stream: if token_type not in Whitespace: return token_type in Keyword and value == self.type