Hi Hancock, --On Sonntag, 8. Dezember 2002 21:34 -0800 Terry Hancock <hancock@anansispaceworks.com> wrote:
Can anybody tell me what this mysterious "results object" thing actually is?
I'm working from within a Zope product, and defining an SQL() method (same as "ZSQLMethod" created within the ZMI). I then call the method and get a "list of results". Okay, that's a list, but what are its elements?
Aren't they "class instances"? Why don't they have a __dict__? What *is* this beast, and why isn't it something simple?
I was actually trying to forgo the ridiculously cumbersome path of defining a "pluggable brain" with module and class name and passing it to the "advanced management" interface of my ZSQLMethod -- i.e. pretending I'm doing everything through the web. It seems like that really ought not to be necessary in product code. You ought to be able to just slap the wrapper on right in the code, without setting up all that boilerplate, e.g.:
from Shared.DC.ZRDB.Results.py: 67 class r(Record, Implicit, brains, zbrains): 68 'Result record class' 69 70 r.__record_schema__=schema 71 for k in Record.__dict__.keys(): 72 if k[:2]=='__': 73 setattr(r,k,getattr(Record,k)) 74 75 # Add SQL Aliases 76 d=r.__dict__ 77 for k, v in aliases: 78 if not hasattr(r,k): d[k]=v 79 80 if hasattr(brains, '__init__'): 81 binit=brains.__init__ 82 if hasattr(binit,'im_func'): binit=binit.im_func 83 def __init__(self, data, parent, binit=binit): 84 Record.__init__(self,data) 85 if parent is not None: self=self.__of__(parent) 86 binit(self) 87 88 r.__dict__['__init__']=__init__ 89 90 self._class=r This result set class is just an inner class definition in a list alike class for the results. Adding a column could be a little bit harder since the column name is stored elsewhere. You should look in the definition of Record and brains to find an interface for this. Regards Tino