Re: [Zope] Problem using dtml-in in ZSQL method
first, convert mylist to string before calling ZSQL method: <dtml-call "REQUEST.set('strmylist', _.str(mylist))"> And then call the ZSQL method: <params> strmylist:string="[0]" </params> SELECT * FROM MyTable WHERE id in (<dtml-var "strmylist[1:-1]" sql_quote>) ----- Original Message ----- From: Françoise CONIL To: zope@zope.org Sent: Thursday, December 11, 2008 11:21 AM Subject: [Zope] Problem using dtml-in in ZSQL method Hello, My ZSQL method receive a *mylist* parameter that should be an integer list : [21,35] The following code does not work : SELECT * FROM MyTable WHERE id in (<dtml-in mylist> <dtml-sqlvar sequence-item type=int> <dtml-if sequence-last><dtml-else>,</dtml-if> </dtml-in>) *Type de l'erreur* NameError *Valeur de l'erreur* 'client' may not be used as an argument name in this context This other code does not work better : SELECT * FROM MyTable WHERE id in (<dtml-in mylist prefix="myid"> <dtml-sqlvar expr="myid_item" type=int> <dtml-if sequence-last><dtml-else>,</dtml-if> </dtml-in>) *Same error* However, if I use a dictionary list of this type [{'id':21},{'id':35}] with the following code, it works (but it's heavy) SELECT * FROM MyTable WHERE id in (<dtml-in mylist mapping> <dtml-sqlvar id type=int> <dtml-if sequence-last><dtml-else>,</dtml-if> </dtml-in>) The python script that calls my ZSQL method has already build the integer list and I would like to use it as is. Thanks for your help _______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )
| ----- Original Message ----- | From: Fran?oise CONIL | To: zope@zope.org | Sent: Thursday, December 11, 2008 11:21 AM | Subject: [Zope] Problem using dtml-in in ZSQL method | | | Hello, | | My ZSQL method receive a *mylist* parameter that should be an integer list : | [21,35] | | The following code does not work : | | SELECT * | FROM MyTable | WHERE | id in | (<dtml-in mylist> | <dtml-sqlvar sequence-item type=int> <dtml-if | sequence-last><dtml-else>,</dtml-if> | </dtml-in>) select * from mytable <dtml-sqlgroup where> <dtml-sqltest mylist multiple type=int> </dtml-sqlgroup> -- Andrew Milton akm@theinternet.com.au
+-------[ Andrew Milton ]---------------------- | | ----- Original Message ----- | | From: Fran?oise CONIL | | To: zope@zope.org | | Sent: Thursday, December 11, 2008 11:21 AM | | Subject: [Zope] Problem using dtml-in in ZSQL method | | | | | | Hello, | | | | My ZSQL method receive a *mylist* parameter that should be an integer list : | | [21,35] | | | | The following code does not work : | | | | SELECT * | | FROM MyTable | | WHERE | | id in | | (<dtml-in mylist> | | <dtml-sqlvar sequence-item type=int> <dtml-if | | sequence-last><dtml-else>,</dtml-if> | | </dtml-in>) | | select * from mytable | <dtml-sqlgroup where> | <dtml-sqltest mylist multiple type=int> | </dtml-sqlgroup> Actually the sqlgroup is superfluous in this case; name your "mylist" parameter as "id" and select * from mytable <sqltest id multiple type=int> or if you don't want to rename your parameter select * from mytable <sqltest mylist multiple type=int column=id> should work fine -- Andrew Milton akm@theinternet.com.au
participants (2)
-
Andrew Milton -
Jaroslav Lukesh