Skip to content

Instantly share code, notes, and snippets.

@BrianMehrman
Last active July 5, 2018 20:10
Show Gist options
  • Save BrianMehrman/9e80579386cf416a16be1d90b7786374 to your computer and use it in GitHub Desktop.
Save BrianMehrman/9e80579386cf416a16be1d90b7786374 to your computer and use it in GitHub Desktop.
pretty print your SQL
#!/usr/bin/env python
import argparse
import sys
import sqlparse
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import TerminalTrueColorFormatter
def prettyPrint(raw_sql):
lexer = get_lexer_by_name('sql', stripall=True)
formatter = TerminalTrueColorFormatter()
formatted_sql = sqlparse.format(raw_sql, encoding=None, keyword_case='upper', identifier_case='lower', reindent=True)
return highlight(formatted_sql, lexer, formatter)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Pretty print sql.")
parser.add_argument('sql', nargs='?', help='sql as a string')
parser.add_argument('-f', '--file', help='read from file.')
args = parser.parse_args()
if args.file:
sql = open(args.file, 'r')
elif args.sql:
sql = args.sql
else:
sql = sys.stdin
print(prettyPrint(sql))
@ddrscott
Copy link

I do: pbpaste | sqlpp a lot. I wonder if there's an easy way to support that.

@BrianMehrman
Copy link
Author

I will see what I can do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment