Jurgen Defurne wrote:
I don't think that that is necessary anymore. Your comment about the persistent object finally makes everything clear
Cool :-)
what I have been reading in the Zope documentation, but nowhere in the documentation is it explicitly stated that the result of a query is a persistent object.
It isn't, but if you call brain.getObject(), you have a persistent object.
Also, the comments in the Zope book about "Mounted Transient Object Container Caveats" are not really clear and they certainly give no clue on what to do.
If you can suggest changes, and tell me where they need to be made, I'll see about making them...
The error I made in my code was that a) I do need what I call a 'browse' object, which keeps the reference to the ZSQL method,
Ouch. That reference should be a path to the ZSQL method that's resolved when you use it, otherwise, at best, you're trying to storea persisten method in a session ;-)
the number of lines to query and the offset, and this object should (and can) be kept in a session, but b) I do not need to have the result of the query in session storage. This is clearly a mistake.
Agreed.
So the lesson is, do not use the session storage for just passing a result!
Sessions are not a generic bin for data, imagine if a thousand users did a search on your site ;-)
It is much better to declare a global variable myself into which I should pass intermediate values and query results between methods.
eh? cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk