[Zope-DB] Re: Re: Test for equality to Missing.Value (empty field)?

M.-A. Lemburg mal@lemburg.com
Wed, 27 Nov 2002 22:12:31 +0100

Jeff Kowalczyk wrote:
> I agree that mapping SQL Null to None is much more useful than Missing.Value. My only
> experience has been with ZODBCDA and the Zope mxODBC DA, both of which map Null to
> Missing.Value. For things like tal:condition, 'None' is far more friendly to TTW tales and
> TTW script usage, as Deiter points out. And from my point of view, Null isn't semantically
> 'Missing', it is an intentionally blank value, equivalent to None. I think of Missing
> along the lines of a dictionary key error.
> I expect to transition from Windows databases to ZpsycopgDA and ZMySQLDA over time and if
> they all use the Null-None mapping, I'd greatly prefer to see it that way in Zope mxODBC
> DA. Unless there's a good reason, I would consider that the more correct behavior.

mxODBCZopeDA will use the None mapping too in the final

Some other things which I found while writing the DA:

* floats returned from the database are automagically converted
   to integers in the ZODBCDA if the scale is 0 -- I wonder whether
   that's a good idea, because integers can overflow (the mxODBC
   Zope DA uses longs for these cases).

* there's no query interface which allows usage of bound
   parameters (as defined in the DB-API); the result is that
   data in query strings is restricted in size to what the database
   interfaces can handle, e.g. Oracle has a 4k byte for SQL
   literals. I would welcome a standard interface of the form
   .execute(sql, paramtuple, maxrows=None)

* there's no support for providing an offset into the result set;
   this makes browsing large query sets very slow and memory

* the de-facto "standards" for .tables() and .columns() have
   inconsistent interfaces

Are there any activities to solve these problems ? Something
like a DB-API for Zope internal use ?

> "Dieter Maurer" <dieter@handshake.de> wrote in message
> news:15845.3500.897813.894036@gargle.gargle.HOWL...
>>M.-A. Lemburg writes:
>> > ...
>> > Note that the mxODBC Zope DA also maps None returns (which represent
>> > NULLs in SQL) to Zope's Missing.MV. The Zope DA has to do this to
>> > stay compatible to the other DAs.
>>Are you sure?
>>Where did you find that documented?
>>The DA's I used ("ZpsycopgDA", ZMySQLDA, ZOracleDA")
>>map SQL Null to "None" and this is good,
>>as "Missing.MV" is unavailable in TTW code.
>>This makes it quite not very adequate for the job.
> _______________________________________________
> Zope-DB mailing list
> Zope-DB@zope.org
> http://lists.zope.org/mailman/listinfo/zope-db

Marc-Andre Lemburg
CEO eGenix.com Software GmbH
eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,...
Python Consulting:                               http://www.egenix.com/
Python Software:                    http://www.egenix.com/files/python/