Greg Fischer wrote:

I guess my quick fix wont work.  Well, it fixes the fmt for decimals,
but there's more to the issue.  Statistical summaries, total, sum dont
work either.
In my dtml-in I might have this:
<dtml-var total-decimalcolumn>
<dtml-var sum-decimalcolumn>

These dont work with Mysql 5.0.4.  So, what do we have to change in
the Mysql DA or maybe the Mysql-python to fix this?

If I find anything, I'll post more.

On 5/13/05, Greg Fischer <[EMAIL PROTECTED]> wrote:

OK well, I fixed it. At least on "My" zope server.

The function for dollars-and-cents in was like this:
def dollars_and_cents(v, name='(Unknown name)', md={}):
  try: return "$%.2f" % v
  except: return ''

I changed it to this:
def dollars_and_cents(v, name='(Unknown name)', md={}):
  try: return "$%.2f" % float(v)
  except: return ''

Problem solved.  I just tested it in Mysql 5.0.0 and 5.0.4, and it
works great.  I'll setup the rest of my app and test some more to make
sure I am not missing something. If there are any problems I'll post
more details.

Is this something that could be posted on the Zope Collector?  It
should probably be tested on lots of other Db's I bet.  But, one
question I have, should this be handled in the Mysql DA?

On 5/13/05, Greg Fischer <[EMAIL PROTECTED]> wrote:
That's it right there!  Before 5.0.3, they were unpacked, meaning
saved like a char.  Now they are packed, fixed point numbers.  This is
screwing up the python functions for fmt.

Well, I was trying to NOT redo all that code, but looks like I will
have to if I want to run the new mysql.  I have tons of reports using
dtml and fmt.   I think I'll stick with 5.0.0 for now until I have
time for that. (spent it all trying to figure out where my problem

Though, I might just switch to Firebird if I have to do some code
changing on my app anyway.  It's a bit more mature than Mysql's new
stuff. (considering it's still in beta)  Mysql is just so easy.


On 5/13/05, Greg Fischer <[EMAIL PROTECTED]> wrote:

ok, lots of testing, and I have found that this is related to Mysql 5.0.4.

I compiled and installed Mysql 5.0.0 and the problem does not exist. I
guess means that it started in 5.0.1 or higher.  I read through the
change logs and saw a couple of items related to float values on 5.0.3
and 5.0.4, but I dont have any idea if those are causing the issue.

So, I dont know where to go next.  I can post this info on the mysql
lists, but I only see the problem in Zope.  Python, or at least the
MysqlDA, retrieves the value just fine.  I only get the problem if
using a fmt option on Zope.
Here's a recap:
-- I can use Zope 2.7.4 with Mysql 5.0.4 on Windows (using Egenix ODBC
DA) and there is no issue.
-- I can use Zope 2.7.3 with Mysql 5.0.0 on Linux (Zmysqlda 2.0.9b3,
Mysql-python1.2.0,Python 2.3.4) and there is no issue.
-- When using Zope 2.7.3 with same setup as before, but with Mysql
5.0.4, problem exists.
-- Zope 2.7.6 has same issue.

I tried doing a simple dtml:
<dtml-call "REQUEST.set('dec',10.23)">
<dtml-var dec><br>
<dtml-var dec fmt="dollars-and-cents"><br>

This works just fine.  But when pulling 'dec' from Mysql, dtml wont
render it if using fmt.

I dont have to use Mysql 5.x.  It's just that I already have the app
running on it, and I'd like to start testing the stored procedures and
other useful features.

Sorry for the long post.  I just want to give as much info as
possible.  Thank you for any help!


On 5/12/05, Greg Fischer <[EMAIL PROTECTED]> wrote:

Oh, it is a decimal(15,2) column.  (all of them are)  Just thought I'd
mention everything too... Running Ubuntu 5.0.4, has the Python 2.4.1
package installed, but I have Python 2.3.4 compiled and installed
separately for Zope.  Zope is compiled with the --with-python flag.

Just tried your suggestion, commenting the 'conv[FIELD_TYPE.DECIMAL] =
float' line, restart Zope, still have the issue.

So, I have the older Python, which I used to have.  I could try
loading an older Zope, but what I might try is loading the MySQL
5.0.0, which I had before.  At least I can hopefully find out which is
causing my problem.  However, I have Zope 2.7.4 with MySQL 5.0.4 and
it works fine, but on Windows using the Egenix adapter.  Now, I cant
remember what I had for the mysql-python version, it's on the other
server at my clients site. (cant get to it right now)

I guess one of my main questions too is, would Zope be getting
anything from the 2.4.1 Ubuntu packages that are installed if I
compiled it with the 2.3.4 python?  (mysql-python is installed
correctly on 2.3.4 too)

On 5/12/05, Andy Dustman <[EMAIL PROTECTED]> wrote:

On 5/12/05, Greg Fischer <[EMAIL PROTECTED]> wrote:

Thanks Andy. I do have those versions. But Python is 2.3.5 because I
didnt want to move to 2.4.x as I think I read something in the README
for Zope stating it was not tested for compatibility. (right?) I
guess my thought is... Does 2.3.5 have the same issue as 2.4 regarding
the decimals? For now, I am just going to setup 2.3.4 and run with

The Python decimal type is new in 2.4.

I don't think you've actually said whether or not you are actually
using a DECIMAL column.

I had forgotten that ZMySQLDA-2.0.9b3 always returns DECIMAL columns
as Python float. If you look in ZMySQLDA/, you can see where it
does this in the DB class. You could try commenting this line out,
which will cause it to be returned as a string, and restarting Zope.
It's something to try, at least.
Computer interfaces should never be made of meat.
Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Greg Fischer
1st Byte Solutions

Greg Fischer
1st Byte Solutions

Have you contacted the mySQL product maintainer? This is not a Zope community issue. Which is to say, many of us have the instinct to help but simply do not use mySQL and therefore have nothing to suggest. Other than what is obvious:
a) contact the maintainer
b) consider changing to a "well-maintained" data adapater.


Zope maillist -
** No cross posts or HTML encoding! **
(Related lists - )

Reply via email to