MySQLdb and ordering of column names in list returned by keys() w/ a DictCursor

Tim Chase python.list at tim.thechases.com
Thu Jul 2 11:48:18 EDT 2009


> sql = "SELECT player_id, SUM(K) AS K, SUM(IP) AS IP, SUM(ER) AS ER, SUM(HR)
> AS HR, SUM(H) AS H, SUM(BB) AS BB, Teams.league FROM Pitching INNER JOIN
> Teams ON Pitching.team = Teams.team_id WHERE Date BETWEEN '%s' AND '%s'
> GROUP BY player_id" % (start, date)
> cursor.execute(sql)
> 
> for row in cursor.fetchall():
>     print row.keys()
> 
> What I get is:
> 
> ['league', 'BB', 'HR', 'IP', 'K', 'H', 'player_id', 'ER']
> 
> Neither alphabetical nor the order in which they were specified in the query
> nor... any seeming order I can suss out. Any ideas? Thanks!
> 
> (cursor being a MySQLdb.cursors.DictCursor object.)

My guess is you're experiencing the fact that dicts are unordered 
by nature which allows it to return in any order it likes 
(usually per the internal representation/storage).

-tkc






More information about the Python-list mailing list