No estoy pidiendo el comando SHOW COLUMNS
.MySQL: Obtener el nombre de columna o el alias de la consulta
Quiero crear una aplicación que funcione de manera similar a heidisql, donde puede especificar una consulta SQL y cuando se ejecuta, devuelve un conjunto de resultados con filas y columnas que representan el resultado de su consulta. Los nombres de columna en el conjunto de resultados deben coincidir con las columnas seleccionadas, tal como se define en su consulta SQL.
En mi programa de Python (usando MySQLdb
) mi consulta devuelve solo los resultados de fila y columna, pero no los nombres de columna. En el siguiente ejemplo, los nombres de columna serían ext
, totalsize
y filecount
. El SQL eventualmente sería externo al programa.
La única manera en que me puedo imaginar para hacer esto, es escribir mi propia lógica de analizador SQL para extraer los nombres de columna seleccionados.
¿Hay alguna manera fácil de obtener los nombres de columna para el SQL proporcionado? Siguiente ¿Necesitaré saber cuántas columnas devuelve la consulta?
# 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[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:
break
print "%s %s %s\n" % (row[0], row[1], row[2])
cursor.close()
db.close()
Gracias Daniel DiPaulo ... esa es la respuesta que estaba buscando.Acabo de escribir mi propio analizador SQL para poder extraer los nombres/alias de las columnas de selección. Funciona bien. – panofish
Gracias al usuario625477 ... esa es la mejor respuesta. ¿Por qué stackoverflow no me envió por correo electrónico las respuestas actualizadas? – panofish