Am 16.07.2011 18:59 schrieb Maxim Yegorushkin:
+ elif isinstance(val, float):
+ if math.isnan(val):
+ val = "'NaN'"
+ elif math.isinf(val):
+ val = "'Infinity'" if val> 0 else "'-Infinity'"
elif val is None:
val = 'NULL'
elif isinstance(val, (list, tuple)):
Yes, something along these lines will be better, with some changes to
make this work on older Python versions which do not have isinf, isnan
and the ternary syntax. Like so:
try:
from math import isnan, isinf
except ImportError: # Python < 2.6
isnan = lambda x: x != x
isinf = lambda x: not isnan(x) and isnan(x * 0)
It relies on the fact that python can handle "Infinity" and
"-Infinity" as well as "inf" and "-inf". I can't double check that in
python documentation right now since python.org does not respond at
present.
Another thing worth mentioning is that it would break user code that
uses float formatting in sql strings, like "%.2f" instead of simple
"%s". Are float formats allowed in sql strings according to dbapi
spec?
Good question. Pygres supports "pyformat", which means "extended" format
codes. Not sure whether the "extended" refers only to dictionary style
parameters or also other format codes - the specs are unclear. But we
should clarify this first.
-- Christoph
_______________________________________________
PyGreSQL mailing list
[email protected]
http://mailman.vex.net/mailman/listinfo/pygresql