title: How to pretty format the printing of SQL Queries in SQLAlchemy?
body: <p>I'm using SQLAlchemy to generate PL/SQL on the fly using <code>compile</code> and setting the <code>dialect</code> and <code>compile_kwargs</code> arguments (e.g., using <code>str(ins.compile(dialect=oracle.dialect(), compile_kwargs={'literal_binds': True}))</code>) This works fine, except the output is not formatted in the most pretty SQL statement ever.</p>
  
  <p>For example, one of my outputs looks like this:</p>
  
  <pre><code>INSERT INTO my_table (a, b, c) SELECT my_table2.d, bar.e, bar.f 
  FROM my_table2 JOIN (SELECT my_table3.e AS e, max(my_table3.f) AS f, count(my_table3.g) AS g 
  FROM my_table3 
  WHERE my_table3.h = 'foo' GROUP BY my_table3.e 
  HAVING count(my_table3.g) = 1) bar ON my_table2.g = bar.g
  </code></pre>
  
  <p>Instead, I would want this to print out like the following:</p>
  
  <pre><code>INSERT INTO my _table (a, b c)
  SELECT my_table2.d, bar.e, bar.f
  FROM my_table2 JOIN (
      SELECT my_table3.e, max(my_table3.f), count(my_table3.g)
      FROM my_table3
      WHERE my_table3.h = 'foo'
      GROUP BY my_table3.e
      HAVING count(my_table3.g) = 1
  ) bar ON my_table2.g = bar.g
  </code></pre>
  
  <p>How can I get SQLAlchemy to pretty print the SQL statements?</p>
  
  <hr>
  
  <p>To replicate:</p>
  
  <pre>
  from sqlalchemy import table, column, String, Numeric, func, select
  from sqlalchemy.dialects import oracle
  my_table = table('my_table', column('a', String), column('b', String), column('c', String))
  my_table2 = table('my_table2', column('d', String), column('g', String))
  my_table3 = table('my_table3', column('d', String), column('e', String), column('f', Numeric), column('g', String), column('h', String))
  
  inner_sel = select([my_table3.c.e, func.max(my_table3.c.f).label('f'), func.count(my_table3.c.g).label('g')]).where(my_table3.c.h=='foo').group_by(my_table3.c.e).having(func.count(my_table3.c.g)==1).alias('bar')
  
  
  outer_sel = select([my_table2.c.d, inner_sel.c.e, inner_sel.c.f]).select_from(my_table2.join(inner_sel, my_table2.c.g==inner_sel.c.g))
  
  ins = my_table.insert().from_select([my_table.c.a, my_table.c.b, my_table.c.c], outer_sel)
  
  print ins.compile(dialect=oracle.dialect(), compile_kwargs={'literal_binds': True})
  </pre>