Search notes:

Python library: sqlparse

Exctract statements (separated by semicolons):
import sqlparse

stmts = '''

   select * from dual;
   select 42 + 13;
   insert into dest
   select
      x,
      y
   from
      src

'''

for i, stmt in enumerate(sqlparse.split(stmts)):
    print(str(i) + ': ' + stmt)
Parse an SQL statement:
import sqlparse

stmt = '''
  select
     clt.id                          client_id,
     clt.name                        client_name,
     sal.val *  sal.items         as total_price,
    'foo bar baz: ' || sal.txt    as conc
  from
     client clt                                  join
     sale   sal on clt.id = sal.client_id
'''


def printTokenTree(lvl, token):
   if hasattr(token, 'tokens'):
      for t in token.tokens:
          printTokenTree(lvl+1, t)
   else:
      if not token.is_whitespace:
         print( ('  ' *lvl) + token.value)

ast = sqlparse.parse(stmt)[0]

printTokenTree(0, ast)

Index