Prettyprinting SQL statements
Mensanator
mensanator at aol.com
Sun May 11 00:16:15 EDT 2008
On May 10, 10:23�pm, MooJoo <flossy at bobbsey_twins.com> wrote:
> I'm building a Python app that will be making queries to a MySQL server
> using the MySQLdb module. The app will need to create SQL statements on
> the fly which, in addition to going to the server, will occasionally
> need to be displayed to the user. While these queries are not too
> complex, they still can be difficult to decipher without doing some
> formatting. I've done the requisite Googling to see if a library to
> format SQL can be found but, other than commericial Windows apps and
> some on-line formatters, I've not found anything remotely usable. Before
> trying to write my own parser/formatter, I was hoping somebody might
> know of a package to perform this function.
>
> Anybody? Ferris? Anybody at all?
>
> Thanks.
I always just do this:
def keyword(s):
if s.isupper():
return '\n'+s+'\t'
else:
return s
sql = "SELECT letter.*,letter1.* FROM letter,letter AS letter1 ORDER
BY letter.n;"
s = sql.split()
pp = ' '.join(map(keyword,s))
print pp
Then insert the pp strings into my source code as shown.
# unjoined tables create a Cartesian Product
#
import sqlite3
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.executescript("""
create table letter(n);
""")
letters = [('a'),('b'),('c'),('d'),('e'),('f'),('g'),('h')]
cur.executemany("""
INSERT
INTO letter(n)
VALUES (?);
"""
, letters)
cur.execute("""
SELECT letter.*,letter1.*
FROM letter,letter
AS letter1
ORDER
BY letter.n;
""")
cartesian_product = cur.fetchall()
for i in cartesian_product:
print i[0]+i[1],
More information about the Python-list
mailing list