Merge commit '2566581442eff9b17ee439296e7c4e9c232cee26'

This commit is contained in:
Friedrich Lindenberg 2014-01-05 16:01:32 +01:00
commit ec9a2c56d1
3 changed files with 16 additions and 2 deletions

View File

@ -1,5 +1,9 @@
import logging
from itertools import count
try:
from collections import OrderedDict
except ImportError:
from ordereddict import OrderedDict # Python < 2.7 drop-in
from sqlalchemy.sql import and_, expression
from sqlalchemy.schema import Column, Index
@ -281,7 +285,7 @@ class Table(object):
rp = self.database.executable.execute(query)
data = rp.fetchone()
if data is not None:
return dict(zip(rp.keys(), data))
return OrderedDict(zip(rp.keys(), data))
def _args_to_order_by(self, order_by):
if order_by[0] == '-':

View File

@ -1,5 +1,9 @@
from datetime import datetime
from inspect import isgenerator
try:
from collections import OrderedDict
except ImportError:
from ordereddict import OrderedDict # Python < 2.7 drop-in
from sqlalchemy import Integer, UnicodeText, Float, DateTime, Boolean
@ -46,7 +50,7 @@ class ResultIter(object):
else:
# stop here
raise StopIteration
return dict(zip(self.keys, row))
return OrderedDict(zip(self.keys, row))
def __iter__(self):
return self

View File

@ -244,5 +244,11 @@ class TableTestCase(unittest.TestCase):
assert FLOAT == type(tbl.table.c['foo'].type), tbl.table.c['foo'].type
assert 'foo' in tbl.columns, tbl.columns
def test_key_order(self):
res = self.db.query('SELECT temperature, place FROM weather LIMIT 1')
keys = res.next().keys()
assert keys[0] == 'temperature'
assert keys[1] == 'place'
if __name__ == '__main__':
unittest.main()