I’m not asking for the
SHOW COLUMNS command.
I want to create an application that works similarly to heidisql, where you can specify an SQL query and when executed, returns a result set with rows and columns representing your query result. The column names in the result set should match your selected columns as defined in your SQL query.
In my Python program (using
MySQLdb) my query returns only the row and column results, but not the column names. In the following example the column names would be
filecount. The SQL would eventually be external from the program.
The only way I can figure to make this work, is to write my own SQL parser logic to extract the selected column names.
Is there an easy way to get the column names for the provided SQL?
Next I’ll need to know how many columns does the query return?
# Python import MySQLdb #=================================================================== # connect to mysql #=================================================================== try: db = MySQLdb.connect(host="myhost", user="myuser", passwd="mypass",db="mydb") except MySQLdb.Error, e: print "Error %d: %s" % (e.args, e.args) sys.exit (1) #=================================================================== # query select from table #=================================================================== cursor = db.cursor () cursor.execute ("""\ select ext, sum(size) as totalsize, count(*) as filecount from fileindex group by ext order by totalsize desc; """) while (1): row = cursor.fetchone () if row == None: break print "%s %s %s\n" % (row, row, row) cursor.close() db.close()
cursor.description will give you a tuple of tuples where  for each is the column header.
num_fields = len(cursor.description) field_names = [i for i in cursor.description]
Answered By – user625477
Answer Checked By – Mildred Charles (BugsFixing Admin)