Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I format strings to query with mysqldb in Python?

How do I do this correctly:

I want to do a query like this:

query = """SELECT * FROM sometable 
                    order by %s %s 
                    limit %s, %s;"""
conn = app_globals.pool.connection()
cur = conn.cursor()
cur.execute(query, (sortname, sortorder, limit1, limit2) ) 
results = cur.fetchall()

All works fine but the order by %s %s is not putting the strings in correctly. It is putting the two substitutions in with quotes around them.

So it ends up like:

ORDER BY 'somecol' 'DESC'

Which is wrong should be:

ORDER BY somecol DESC

Any help greatly appreciated!

like image 347
Daniel Avatar asked Mar 29 '10 13:03

Daniel


1 Answers

paramstyle
Parameter placeholders can only be used to insert column values. They can not be used for other parts of SQL, such as table names, statements, etc.

like image 171
SilentGhost Avatar answered Sep 24 '22 21:09

SilentGhost