PySqlite - division of real numbers without decimal fractions

Astley Le Jasper Astley.lejasper at gmail.com
Mon Nov 10 04:50:51 EST 2008


On 8 Nov, 05:39, Dennis Lee Bieber <wlfr... at ix.netcom.com> wrote:
> On Fri, 07 Nov 2008 14:36:52 +0100, Gerhard Häring <g... at ghaering.de>
> declaimed the following in comp.lang.python:
>
> > Astley Le Jasper wrote:
> > > I've been getting errors recently when using pysqlite. I've declared
> > > the table columns as real numbers to 2 decimal places (I'm dealing
> > > with money),
>
> > MySQL doesn't have any MONEY type. All it has is INTEGER, REAL, TEXT,
> > BLOB and NULL types.
>
>         Did you mean SQLite? <G>
>
>
>
> > Perhaps using SQLite's column affinity would help? Let the type be named
> > "real" instead of anything fancy:
>
>         If dealing with monetary computations, it might be better to define
> converters/adapters for Python's decimal type... Though that may mean
> that doing simple SQL arithmetic may not be possible -- might need to
> supply a Python function to work the arithmetic with conversion of the
> data...
> --
>         Wulfraed        Dennis Lee Bieber               KD6MOG
>         wlfr... at ix.netcom.com             wulfr... at bestiaria.com
>                 HTTP://wlfraed.home.netcom.com/
>         (Bestiaria Support Staff:               web-a... at bestiaria.com)
>                 HTTP://www.bestiaria.com/

Hi,

Sorry. I don't get this.

I am using numbers to 2dp (it doesn't really matter that it's money or
not) and importing them into SQLite where all the views are held. One
of the columns is doing the following calculations:


([actual_price]-[recommended_price]) AS [difference]
([actual_price]-[recommended_price])/[recommended_price] AS
[difference_proportion]

When using a SQLite gui like SQLiteManager I can see the imported data
is stored correctly and the column has been calculated correctly. So
I'll have something like:

[actual_price],[recommended_price],[difference],
[difference_proportion]
199.99,299.99,-100.00,-0.343344445
100.00,120.00,-100.00,-0.16666667

However, when calling the view from pysqlite I get the following
results
199.99,299.99,-100.00,-0.34
100.00,120.00,-100.00,0

So the row where both numbers have no decimal fraction are changing to
an integer. I looks like there is something going on in between sqlite
and pysqlite.



More information about the Python-list mailing list