summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py8
-rw-r--r--lib/sqlalchemy/dialects/mysql/mysqldb.py4
-rw-r--r--lib/sqlalchemy/dialects/mysql/oursql.py4
-rw-r--r--lib/sqlalchemy/dialects/postgresql/pypostgresql.py2
4 files changed, 12 insertions, 6 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index 6c8937799..bd275d758 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -286,8 +286,14 @@ class _MSNumeric(sqltypes.Numeric):
return value
return process
else:
+ #XXX: if the DBAPI returns a float (this is likely, given the
+ # processor when asdecimal is True), this should be a None
+ # processor instead.
def process(value):
- return float(value)
+ if value is not None:
+ return float(value)
+ else:
+ return value
return process
def bind_processor(self, dialect):
diff --git a/lib/sqlalchemy/dialects/mysql/mysqldb.py b/lib/sqlalchemy/dialects/mysql/mysqldb.py
index 846de6580..c07ed8713 100644
--- a/lib/sqlalchemy/dialects/mysql/mysqldb.py
+++ b/lib/sqlalchemy/dialects/mysql/mysqldb.py
@@ -50,9 +50,9 @@ class MySQL_mysqldbCompiler(MySQLCompiler):
class _DecimalType(_NumericType):
def result_processor(self, dialect, coltype):
if self.asdecimal:
- return
+ return None
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:
return value
diff --git a/lib/sqlalchemy/dialects/mysql/oursql.py b/lib/sqlalchemy/dialects/mysql/oursql.py
index 5558c1a19..79a36f535 100644
--- a/lib/sqlalchemy/dialects/mysql/oursql.py
+++ b/lib/sqlalchemy/dialects/mysql/oursql.py
@@ -38,9 +38,9 @@ class _PlainQuery(unicode):
class _oursqlNumeric(NUMERIC):
def result_processor(self, dialect, coltype):
if self.asdecimal:
- return
+ return None
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:
return value
diff --git a/lib/sqlalchemy/dialects/postgresql/pypostgresql.py b/lib/sqlalchemy/dialects/postgresql/pypostgresql.py
index 2c33b3eb5..77ed44512 100644
--- a/lib/sqlalchemy/dialects/postgresql/pypostgresql.py
+++ b/lib/sqlalchemy/dialects/postgresql/pypostgresql.py
@@ -22,7 +22,7 @@ class PGNumeric(sqltypes.Numeric):
return None
else:
def process(value):
- if isinstance(value, decimal.Decimal):
+ if value is not None:
return float(value)
else:
return value