sameer chaudhry wrote at 2003-1-6 16:02 -0500:
Two issues: 1)
I have a product that I wrote in zope which is just a big hash. It loads in company names as keys, and from a text file, adds ticker items as each value for a particular key. Now I only want this huge dictionary to load once, which is when zope starts up (possibly in a global space), as I need one copy of it and I need that one copy to update every x number of minutes. Currently, I think, each user that views this product, loads his own copy of the hash, which makes it slow and a memory hog. I only want a single copy available to all users, and the data refresh time to be determined by the system or the user. Put it into a Python module and provide accessors for the data. The accessor functions will refresh as necessary. Be careful about synchronization. You might be interested in my product "SharedResource" (<http://www.dieter.handshake.de/pyprojects/zope>).
When you want to make it available to Python Scripts or Page Templates, you need to provide security declarations allowing this. Read the "Readme" in the "PythonScripts" product.
2)
In the same python product, I am trying to access an ODBC database connection. I have tried 2 ways of accessing it, and both have failed. First I created a Z SQL method in the same directory as the Product, and tried to access that Z SQL method. My product subclasses SimpleItem, and so I tried self.getattr(name_of_Z_SQL_meth)(). The Z SQL method doesn't take any arguments, so that should have worked. Then I tried import SQL from Zope: from Products.ZSQLMethods.SQL import SQL, and running the SQL method directly. It always complains about the formation of the connection ID which I cannot seem to get right. Help on either of these issues would be greatly appreciated. "getattr" is not a method but a function. It is used like
attr= getattr(obj,attrName) Dieter