panofish panofish - 1 year ago 110
MySQL Question

MySQL: Get column name or alias from query

I'm not asking for the


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
) my query returns only the row and column results, but not the column names. In the following example the column names would be
, and
. 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

db = MySQLdb.connect(host="myhost", user="myuser", passwd="mypass",db="mydb")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
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:
print "%s %s %s\n" % (row[0], row[1], row[2])


Answer Source

cursor.description will give you a tuple of tuples where [0] for each is the column header.

num_fields = len(cursor.description)
field_names = [i[0] for i in cursor.description]
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download