Interesting. Thank you for the extensive explanation. pon., 29 kwi 2019 o 19:49 Mike Bayer <[email protected]> napisał(a):
> On Mon, Apr 29, 2019 at 1:13 PM mdob <[email protected]> wrote: > > > > Just out of curiosity, why it was decided that MySQL DOUBLE, which is > approximation, will be presented in ORM as Decimal by default instead of > float? > > > > MySQL DOUBLE - > https://dev.mysql.com/doc/refman/5.5/en/floating-point-types.html > > SQLAlchemy DOUBLE - > https://docs.sqlalchemy.org/en/13/dialects/mysql.html#sqlalchemy.dialects.mysql.DOUBLE > > no idea, lets do a git blame > > it looks like the issue to first add Decimal support was: > > https://github.com/sqlalchemy/sqlalchemy/issues/646 > > it appears to refer to a no longer tracked SVN changeset, the merge > can be seen at > https://github.com/sqlalchemy/sqlalchemy/commit/ed4fc64bb0ac61c27bc4af32962fb129e74a36bf > , > where quite arbitrarily the asdecimal flag is True for DOUBLE even > though the superclass is Float. That's all 12 years ago. > > Let's try to blame for the ".. note" that was added, since someone > seems to have noticed this was wrong about six years ago, seems like > it was in > https://github.com/sqlalchemy/sqlalchemy/commit/6b79d2ea7951abc2bb6083b541db0fbf71590dd3 > where we made it a lot more explicit how the float coercion occurs. > > All we have is a guess. It would have been that I either observed or > guessed that Python's float, at least the "ten digits" that was coming > out by default back on my cPython 2.3 interpreter on my PowerPC mac at > the time, was not accurate enough to represent the values coming back > from a double-precision floating point value. > Trying to see what the likely floating point representation is for > cPython is ...a ha we can do this: > > >>> import sys > >>> sys.float_info > sys.float_info(max=1.7976931348623157e+308, max_exp=1024, > max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, > min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, > radix=2, rounds=1) > > I have no idea what would have been happening at that time, it was > likely to preserve round trips for the additional digits, but this was > shortsighted because the driver at the time MySQLdb was likely > returning floats anyway, current branch of it does: > > https://github.com/PyMySQL/mysqlclient-python/blob/master/MySQLdb/converters.py#L107 > so seems like a careless oversight. Sorry! > > > > > > > > > Thanks, > > Michal > > > > -- > > SQLAlchemy - > > The Python SQL Toolkit and Object Relational Mapper > > > > http://www.sqlalchemy.org/ > > > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > > --- > > You received this message because you are subscribed to the Google > Groups "sqlalchemy" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at https://groups.google.com/group/sqlalchemy. > > For more options, visit https://groups.google.com/d/optout. > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
