MySQLdb and ordering of column names in list returned by keys() w/ a DictCursor
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)
> 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).
More information about the Python-list