[Zope-DB] Controlling Z SQL caching
Ian Bicking
ianb at colorstudy.com
Wed Feb 25 17:42:12 EST 2004
Dieter Maurer wrote:
> Ian Bicking wrote at 2004-2-24 16:12 -0600:
>
>>I've decided that I definitely need some caching in a database-driven
>>application I'm working on, but I need to be able to invalidate the
>>cache on a query.
>
>
> Have a look at "CCZSQLMethods"
>
> <http://www.dieter.handshake.de/pyprojects/zope>
>
> It will not work for a ZEO setup.
Thanks for the pointer. And the code, of course :)
Our administrator is a little wary of SharedResource -- I think he's
worried it may not be portable across versions of Zope, or something of
that sort. From my (very brief) look, it seems like it's really very
Zope neutral (maybe too neutral, hence not working with ZEO), and
shouldn't be a problem when upgrading Zope. Any warnings or
reassurances you might be able to provide?
When you say it won't work with ZEO, I assume that means that cache
purges won't be propagated to different Zope instances, since
SharedResource (and hence caching) is not ZODB-aware (which would
otherwise be fine for a cache).
> I don't see any way to do that with Z SQL methods.
>
> You can flush the cache by writing the Z SQL Method ("_p_changed=1")
> and deleting its "_v_" attributes.
Hmm, like (?):
def purgeCache(zSQLMethod):
zSQLMethod._p_changed = 1
# Maybe some ZODB stuff I don't understand (I'm a ZODB-newbie),
# my vague guess:
get_transaction().commit()
del zSQLMethod._v_cache
Or do I have the _v_cache and _p_changed backwards? I guess I don't
really understand this.
(BTW, I had a problem with CCSQLMethods/SQL.py, line 51:
manage_main=HTMLFile('../ZSQLMethods/edit', globals())
Changed to:
manage_main=HTMLFile('../ZSQLMethods/dtml/edit', globals())
and it works fine)
More information about the Zope-DB
mailing list