Revert to using OrderedDict.
This commit is contained in:
@@ -5,7 +5,7 @@ from sqlalchemy.sql import and_, expression
|
||||
from sqlalchemy.schema import Column, Index
|
||||
from sqlalchemy import alias
|
||||
from dataset.persistence.util import guess_type
|
||||
from dataset.persistence.util import ResultIter
|
||||
from dataset.persistence.util import ResultIter, convert_row
|
||||
from dataset.util import DatasetException
|
||||
|
||||
|
||||
@@ -282,9 +282,7 @@ class Table(object):
|
||||
args = self._args_to_clause(_filter)
|
||||
query = self.table.select(whereclause=args, limit=1)
|
||||
rp = self.database.executable.execute(query)
|
||||
data = rp.fetchone()
|
||||
if data is not None:
|
||||
return data
|
||||
return convert_row(rp.fetchone())
|
||||
|
||||
def _args_to_order_by(self, order_by):
|
||||
if order_by[0] == '-':
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
from datetime import datetime, timedelta
|
||||
from inspect import isgenerator
|
||||
|
||||
try:
|
||||
from collections import OrderedDict
|
||||
except ImportError:
|
||||
from ordereddict import OrderedDict
|
||||
|
||||
from sqlalchemy import Integer, UnicodeText, Float, DateTime, Boolean, types, Table, event
|
||||
|
||||
|
||||
@@ -16,6 +21,12 @@ def guess_type(sample):
|
||||
return UnicodeText
|
||||
|
||||
|
||||
def convert_row(row):
|
||||
if row is None:
|
||||
return None
|
||||
return OrderedDict(row.items())
|
||||
|
||||
|
||||
class ResultIter(object):
|
||||
""" SQLAlchemy ResultProxies are not iterable to get a
|
||||
list of dictionaries. This is to wrap them. """
|
||||
@@ -47,7 +58,7 @@ class ResultIter(object):
|
||||
else:
|
||||
# stop here
|
||||
raise StopIteration
|
||||
return row
|
||||
return convert_row(row)
|
||||
|
||||
next = __next__
|
||||
|
||||
@@ -66,6 +77,8 @@ def sqlite_datetime_fix():
|
||||
return (value / 1000 - self.epoch).total_seconds()
|
||||
|
||||
def process_result_value(self, value, dialect):
|
||||
if isinstance(value, basestring):
|
||||
return value
|
||||
return self.epoch + timedelta(seconds=value / 1000)
|
||||
|
||||
def is_sqlite(inspector):
|
||||
|
||||
Reference in New Issue
Block a user