arrays in sql methods and dtml-in
I have a document with a checkbox group in it. This group corresponds to an array in my Postgres database. So, for example, the user does this: Letters: [ ] A [x] B [ ] C [x] D Then my dtml method gets: ['B', 'D'] which i would like to insert into my database. In Postgres, a normal array insertion looks like: insert into foo (letters) values ('{"B", "D"}'); so i tried this: <dtml-with REQUEST> INSERT INTO foo ( letters ) VALUES ( <dtml-in letters> <dtml-if sequence-start> '{ </dtml-if> "<dtml-sqlvar sequence-item type=string>" <dtml-if sequence-end> '} </dtml-if> <dtml-else> null </dtml-in> ) </dtml-with> This gives me the error: Error Type: InError Error Value: Strings are not allowed as input to the in tag. Traceback (innermost last): File /local/zope/lib/python/ZPublisher/Publish.py, line 214, in publish_module File /local/zope/lib/python/ZPublisher/Publish.py, line 179, in publish File /local/zope/lib/python/Zope/__init__.py, line 201, in zpublisher_exception_hook (Object: ElementWithAttributes) File /local/zope/lib/python/ZPublisher/Publish.py, line 165, in publish File /local/zope/lib/python/ZPublisher/mapply.py, line 160, in mapply (Object: PerformSignup) File /local/zope/lib/python/ZPublisher/Publish.py, line 102, in call_object (Object: PerformSignup) File /local/zope/lib/python/OFS/DTMLMethod.py, line 145, in __call__ (Object: PerformSignup) File /local/zope/lib/python/DocumentTemplate/DT_String.py, line 502, in __call__ (Object: PerformSignup) File /local/zope/lib/python/DocumentTemplate/DT_In.py, line 691, in renderwob (Object: getuser) File /local/zope/lib/python/Shared/DC/ZRDB/DA.py, line 395, in __call__ (Object: sqlUserInsert) File /local/zope/lib/python/DocumentTemplate/DT_String.py, line 502, in __call__ (Object: <string>) File /local/zope/lib/python/DocumentTemplate/DT_With.py, line 148, in render (Object: REQUEST) File /local/zope/lib/python/DocumentTemplate/DT_In.py, line 641, in renderwob (Object: software) InError: (see above) When I initially had just <dtml-sqlvar letters type=string> I got the content of letters, but it wasn't in the proper format for Postgres. Now it seems like I can't get the elements of 'letters' or something. Has anyone used Postgres arrays with Zope and has a better way of doing this? Or at least one works? (= -- pity this busy monster, manunkind, | Dennis Moore | Sarah not. Progress is a comfortable disease. | rainking@frenzy.com | McLachlan -e.e. cummings: One Times One | archon on the irc | "Black" If I cried me a river of all my confessions would I drown in my shallow regret?
On Wed, Nov 24, 1999 at 01:42:52PM -0600, Dennis Moore wrote:
I have a document with a checkbox group in it. This group corresponds to an array in my Postgres database. So, for example, the user does this:
Letters: [ ] A [x] B [ ] C [x] D
Then my dtml method gets: ['B', 'D']
O.K., try an ZSQL method with an argument: letters:list and content like: INSERT INTO foo (letters) VALUES ( <dtml-in letters> <dtml-if sequence-start> '{ </dtml-if> "<dtml-var sequence-item>" <dtml-if sequence-end> }' </dtml-if> <dtml-else> null </dtml-in> ) Ross -- Ross J. Reedstrom, Ph.D., <reedstrm@rice.edu> NSBRI Research Scientist/Programmer Computer and Information Technology Institute Rice University, 6100 S. Main St., Houston, TX 77005
participants (2)
-
Dennis Moore -
Ross J. Reedstrom