Is FLOAT(53) the best way to guarantee a double-precision generic column type

1,348 views
Skip to first unread message

Van Klaveren, Brian N.

unread,
May 2, 2018, 2:03:09 PM5/2/18
to sqlal...@googlegroups.com
I'm trying to work on a universal table generator based on in-memory table objects. The code is based on the work from the pandas to_sql.

I'll be targeting Oracle, Postgres, MySQL, and SQLite for sure.

It seems like making sure to use Float(53) is the best way to guarantee that a column will be generated with a double-precision Floating point in all of these database backends without introspecting the engine at runtime.

Pandas does that here:

Is this generally true?

Also, should I use the generic Float type, or the SQL FLOAT type? It doesn't seem like there's a huge functional difference.

Brian

Mike Bayer

unread,
May 2, 2018, 5:50:05 PM5/2/18
to sqlal...@googlegroups.com
FLOAT types will have floating point inaccuracy. I have no idea if 53
is actually supported, usually floating point accuracy starts to hit
various limits at something like 10 digits.

Usually the NUMERIC type is the best bet since it uses Python Decimal
objects. You should work up some tests that try to round-trip 53
points of precision between all those backends.
> --
> 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 sqlalchemy+...@googlegroups.com.
> To post to this group, send email to sqlal...@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages