From 7ea4fca4ed2c1fe04bcf13ccf476dd2aab750418 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABtan=20de=20Menten?= Date: Sat, 28 Nov 2009 18:07:59 +0000 Subject: [PATCH] - changed a few isinstance(value, Decimal) to "is not None", where appropriate - fixed result processor for Numeric(asdecimal=False) on MSSQL. --- lib/sqlalchemy/dialects/mssql/base.py | 8 +++++++- lib/sqlalchemy/dialects/mysql/mysqldb.py | 4 ++-- lib/sqlalchemy/dialects/mysql/oursql.py | 4 ++-- lib/sqlalchemy/dialects/postgresql/pypostgresql.py | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index 6c89377992..bd275d7589 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 846de6580c..c07ed87135 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 5558c1a192..79a36f535b 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 2c33b3eb5b..77ed44512b 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 -- 2.47.3