#!/usr/bin/env python# Is this safe? Of course not, eval is evil. Be careful with inputs.importdatetimeimportreimportsystry:importsqlparseprinter=lambdastatement:sys.stdout.writelines([sqlparse.format(statement,reindent=True),'\n'])exceptImportError:sys.stderr.write('*** Python library `sqlparse` not found, could not beautify sql!\n\n')printer=lambdastatement:sys.stdout.writelines([statement,'\n'])defrep(_):param=params.pop()ifisinstance(param,(datetime.datetime,datetime.date,datetime.time)):param=str(param)return"'{}'".format(param.replace('\'','\\\''))ifisinstance(param,basestring)elsestr(param)params,sql=[],''forlineinsys.stdin.readlines():line=re.sub(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3} INFO sqlalchemy.engine.base.Engine ','',line.strip())ifre.search(r'^(BEGIN|COMMIT|ROLLBACK)\b',line):printer(line.replace(' (implicit)',''))elifline:try:params=eval(line)ifisinstance(params,(tuple,list)):params=list(params)params.reverse()printer(re.sub(r'%s',rep,sql))sql=''params=[]except(NameError,SyntaxError):sql='{}\n{}'.format(sql,line)ifsqlelseline# Get remaining statementsifsql.strip():params=list(params)params.reverse()printer(re.sub(r'%s',rep,sql))
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.