"Frank Millman"  wrote in message news:n4gigr$f51$1...@ger.gmane.org...

I have found a workaround for my problem, but first I needed to understand
what was going on more clearly. This is what I have figured out.

[...]

The reason for the '#' in the above function is that sqlite3 passes the
current value of 'balance' into my function, and it has a bad habit of
trying to second-guess the data-type to use. Even though I store it as a
string, it passes in an integer or float. Prefixing it with a '#' forces
it to remain as a string.

Well that theory did not last very long!

As soon as I applied this to my live app, I found that I am using the database to perform arithmetic all over the place - calculating tax, exchange rates, etc. I always round the result once it arrives from the database, so there was no rounding problem.

With the prefix of '#' the calculations all just crash, and return null values.

My new solution is to pass a 'scale' factor into my aggregate function. The function uses the Decimal quantize method to round the result before returning. So far it seems to be working.

Frank


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to