RE: Using <dtml-var>s in ZSQL methods?
"Ken Winter" <[email protected]> Sun, 17 Jun 2007 14:22:37 -0400
| Newsgroups | gmane.comp.web.zope.database |
|---|---|
| Message-ID | <000201c7b10c$7c767390$6703a8c0@KenIBM> |
> -----Original Message----- > From: Charlie Clark [mailto:[email protected]] > Sent: Saturday, June 16, 2007 6:24 PM > To: Ken Winter; 'Zope-DB List' > Subject: Re: [Zope-DB] Using <dtml-var>s in ZSQL methods? > ... > FWIW you > might want to call the query or execute methods directly on the DA > connection object if they are supported. ZPsycopgDA is my database adapter. I haven't found any documentation of ZPsycopgDA's methods except its code. In the code, I found a class "DB" with a "query" method (which in turn uses "execute" and "fetchall" methods, whose definitions I can't locate). I tried to invoke the "query" method of my adapter (which is named "dhatabase") with this code: " p = context.REQUEST.get('delete_this') if p: s = ', '.join([str(x) for x in p]) t = "delete from person where person_id in (%s);" % s context.dhatabase.query(query_string=t) " ...and got this error: "AttributeError: query" (full traceback at end of message). What's wrong with my method call? I also have a broader question: When one is composing dynamic SQL in Python scripts, what are the pros and cons of executing them by going directly to the database adapter (as suggested above) vs passing it in as the sole argument of an "empty" ZSQL method? By "empty" ZQL method I mean something like: " <dtml-comment> title: Query whose whole body is passed in as an argument connection_id: dhatabase arguments: foo </dtml-comment> <dtml-var foo> " ~ Thanks ~ Ken P.S. Full details of error: " Time 2007-06-17 13:59 User Name admin (admin) Request URL http://localhost/DAgroups/portal_factory/People/people.2007-06-17.6691253086 /people_edit Exception Type AttributeError Exception Value query Traceback (innermost last): * Module ZPublisher.Publish, line 115, in publish * Module ZPublisher.mapply, line 88, in mapply * Module ZPublisher.Publish, line 41, in call_object * Module Products.CMFPlone.FactoryTool, line 369, in __call__ * Module ZPublisher.mapply, line 88, in mapply * Module ZPublisher.Publish, line 41, in call_object * Module Products.CMFFormController.FSControllerPageTemplate, line 90, in __call__ * Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in _call * Module Products.CMFFormController.ControllerBase, line 232, in getNext __traceback_info__: ['id = people_edit', 'status = success', 'button=delete', 'errors={}', 'context=<People at people.2007-06-17.6691253086>', "kwargs={'portal_status_message': 'People allegedly deleted: 69394, 77084'}", 'next_action=None', ''] * Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__ * Module ZPublisher.mapply, line 88, in mapply * Module ZPublisher.Publish, line 41, in call_object * Module Products.CMFFormController.FSControllerPythonScript, line 104, in __call__ * Module Products.CMFFormController.Script, line 145, in __call__ * Module Products.CMFCore.FSPythonScript, line 108, in __call__ * Module Shared.DC.Scripts.Bindings, line 311, in __call__ * Module Shared.DC.Scripts.Bindings, line 348, in _bindAndExec * Module Products.CMFCore.FSPythonScript, line 164, in _exec * Module None, line 6, in people_delete_control <FSControllerPythonScript at /DAgroups/people_delete_control used for /DAgroups/portal_factory/People/people.2007-06-17.6691253086> Line 6 AttributeError: query REQUEST form delete_this [69394, 77084] form.button.delete 'Delete Selected People' cookies tree-s 'eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuRKCECUjWFEnWNTEbJGvGlQgEegAEWRAt' __ac 'YWRtaW46cHAyMTA3' lazy items SESSION <bound method SessionDataManager.getSessionData of <SessionDataManager at /session_data_manager>> other tree-s 'eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuRKCECUjWFEnWNTEbJGvGlQgEegAEWRAt' __factory__info__ {'stack': ['People', 'people.2007-06-17.6691253086', 'people_edit'], 'People': <TempFolder at /DAgroups/portal_factory/People>} URL5 'http://localhost' URL4 'http://localhost/DAgroups' __ac 'YWRtaW46cHAyMTA3' URL0 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6/people_edit' URL3 'http://localhost/DAgroups/portal_factory' URL2 'http://localhost/DAgroups/portal_factory/People' AUTHENTICATION_PATH '' AUTHENTICATED_USER <PropertiedUser 'admin'> SERVER_URL 'http://localhost' delete_this [69394, 77084] form.button.delete 'Delete Selected People' ACTUAL_URL 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6/people_edit' portal_status_message 'People allegedly deleted: 69394, 77084' URL 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6/people_edit' PUBLISHED <FactoryTool at /DAgroups/portal_factory> controller_state <Products.CMFFormController.ControllerState.ControllerState object at 0x0681DB10> TraversalRequestNameStack [] BASE0 'http://localhost' BASE1 'http://localhost/DAgroups' BASE2 'http://localhost/DAgroups/portal_factory' BASE3 'http://localhost/DAgroups/portal_factory/People' BASE4 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6' BASE5 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6/people_edit' URL1 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6' URL0 http://localhost/DAgroups/portal_factory/People/people.2007-06-17.6691253086 /people_edit URL1 http://localhost/DAgroups/portal_factory/People/people.2007-06-17.6691253086 URL2 http://localhost/DAgroups/portal_factory/People URL3 http://localhost/DAgroups/portal_factory URL4 http://localhost/DAgroups URL5 http://localhost BASE0 http://localhost BASE1 http://localhost/DAgroups BASE2 http://localhost/DAgroups/portal_factory BASE3 http://localhost/DAgroups/portal_factory/People BASE4 http://localhost/DAgroups/portal_factory/People/people.2007-06-17.6691253086 BASE5 http://localhost/DAgroups/portal_factory/People/people.2007-06-17.6691253086 /people_edit environ HTTP_COOKIE 'tree-s="eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuRKCECUjWFEnWNTEbJGvGlQgEegAEWRAt"; __ac="YWRtaW46cHAyMTA3"' SERVER_SOFTWARE 'Zope/(Zope 2.9.6-final, python 2.4.3, win32) ZServer/1.1 Plone/2.5.2' SCRIPT_NAME '' REQUEST_METHOD 'POST' HTTP_KEEP_ALIVE '300' SERVER_PROTOCOL 'HTTP/1.1' channel.creation_time 1182103175 CONNECTION_TYPE 'keep-alive' HTTP_ACCEPT_CHARSET 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' HTTP_USER_AGENT 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1' HTTP_REFERER 'http://localhost/DAgroups/portal_factory/People/people.2007-06-17.669125308 6/people_read_for_edit_control?portal_status_message=People%20allegedly%20de leted%3A%2069393' SERVER_NAME 'KenIBM' REMOTE_ADDR '127.0.0.1' PATH_TRANSLATED '\\DAgroups\\portal_factory\\People\\people.2007-06-17.6691253086\\people_ed it' SERVER_PORT '80' CONTENT_LENGTH '120' HTTP_HOST 'localhost' HTTP_ACCEPT 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q =0.8,image/png,*/*;q=0.5' GATEWAY_INTERFACE 'CGI/1.1' HTTP_ACCEPT_LANGUAGE 'en-us,en;q=0.5' CONTENT_TYPE 'application/x-www-form-urlencoded' HTTP_ACCEPT_ENCODING 'gzip,deflate' PATH_INFO '/DAgroups/portal_factory/People/people.2007-06-17.6691253086/people_edit' "