MySQL: Get column name or alias from query

后端 未结 10 1783
死守一世寂寞
死守一世寂寞 2020-11-28 20:04

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 w

10条回答
  •  佛祖请我去吃肉
    2020-11-28 20:24

    You could also use MySQLdb.cursors.DictCursor. This turns your result set into a python list of python dictionaries, although it uses a special cursor, thus technically less portable than the accepted answer. Not sure about speed. Here's the edited original code that uses this.

    #!/usr/bin/python -u
    
    import MySQLdb
    import MySQLdb.cursors
    
    #===================================================================
    # connect to mysql
    #===================================================================
    
    try:
        db = MySQLdb.connect(host='myhost', user='myuser', passwd='mypass', db='mydb', cursorclass=MySQLdb.cursors.DictCursor)
    except MySQLdb.Error, e:
        print 'Error %d: %s' % (e.args[0], e.args[1])
        sys.exit(1)
    
    #===================================================================
    # query select from table
    #===================================================================
    
    cursor = db.cursor()
    
    sql = 'SELECT ext, SUM(size) AS totalsize, COUNT(*) AS filecount FROM fileindex GROUP BY ext ORDER BY totalsize DESC;'
    
    cursor.execute(sql)
    all_rows = cursor.fetchall()
    
    print len(all_rows) # How many rows are returned.
    for row in all_rows: # While loops always make me shudder!
        print '%s %s %s\n' % (row['ext'], row['totalsize'], row['filecount'])
    
    cursor.close()
    db.close()  
    

    Standard dictionary functions apply, for example, len(row[0]) to count the number of columns for the first row, list(row[0]) for a list of column names (for the first row), etc. Hope this helps!

提交回复
热议问题