if self.asdecimal:
if coltype in _FLOAT_TYPES:
return processors.to_decimal_processor_factory(
- decimal.Decimal, self.decimal_return_scale)
+ decimal.Decimal,
+ self._effective_decimal_return_scale)
elif coltype in _DECIMAL_TYPES or coltype in _INT_TYPES:
# pg8000 returns Decimal natively for 1700
return None
"""
self.precision = precision
self.scale = scale
- self.decimal_return_scale = decimal_return_scale \
- if decimal_return_scale is not None \
- else self.scale if self.scale is not None \
- else self._default_decimal_return_scale
+ self.decimal_return_scale = decimal_return_scale
self.asdecimal = asdecimal
+ @property
+ def _effective_decimal_return_scale(self):
+ if self.decimal_return_scale is not None:
+ return self.decimal_return_scale
+ elif getattr(self, "scale", None) is not None:
+ return self.scale
+ else:
+ return self._default_decimal_return_scale
+
def get_dbapi_type(self, dbapi):
return dbapi.NUMBER
"""
self.precision = precision
self.asdecimal = asdecimal
- self.decimal_return_scale = decimal_return_scale \
- if decimal_return_scale is not None \
- else self._default_decimal_return_scale
+ self.decimal_return_scale = decimal_return_scale
if kwargs:
util.warn_deprecated("Additional keyword arguments "
"passed to Float ignored.")
def result_processor(self, dialect, coltype):
if self.asdecimal:
return processors.to_decimal_processor_factory(
- decimal.Decimal, self.decimal_return_scale)
+ decimal.Decimal,
+ self._effective_decimal_return_scale)
else:
return None