I have some very large integers I need to insert and retrieve from SQLite
without losing any digits. These numbers can be up to 8 bytes (20 digits)
long.

The SQLite documentation says INTEGER datatypes can hold values up to 8
bytes long, however, when I insert any number greater than 17 digits, it
gets converted into a REAL, and truncated to 17 significant digits.

I have found only one way to insert/fetch these values without losing
digits:  define the column affinity to be TEXT, convert the value to a
string in Python, then insert it into the SQLite database. The fetched
value will be TEXT and contain all digits.


However, if I do any arithmetic on it as the query executes, the value gets
converted to REAL, truncated, then the truncated value is used in the
arithmetic.

I have a SQLite database version 3.7.8.  I'm developing in Python version
2.4.4 and using PySqlite version 2.6.3.

I'm aware of Adapters and Converters. They would have to be made such that
the returned value is converted back to a TEXT value before SQLite returns
the value to the program. This might work, but I would prefer to let SQLite
do the manipulation in the usual manner.

Is there any way to insert integers of any size, then retrieve them with a
query that might do math or other manipulations on the values, without
losing digits?

Thanks!!

Regards,
Richard Watkins
Product Development & Systems Engineering
phone: 720-684-2193
email: richard.watk...@seagate.com
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to