I'm have a tuple that I want to pass to a zSQL query to so I can based on items in the tuple. I get the sequence from a zSQL query that selects a single field, and I'm postprocessing it with the following:
<dtml-let SelectedIDs="[ai[0] for ai in queries.selectDOdocIDs().tuples()]">
Which puts the sequence in brackets like this:
[211, 873, 515, 516, 589]
That's the standard Python representation of a list. SQL likes a different syntax.
but mysql seems to want them in parenthesis... because when I try this
select ThemeWords.* from DocThemes, ThemeWords where DocThemes.DocID in <dtml-var SelectedIDs> and DocThemes.ThemeID = ThemeWords.ID
I get a KeyError.
The key error would indicate (depending on what it says: since that's not provided I'm just guessing) that your dtml-let does not contain the code above.
Also, is it possible to pass a list using dtml-sqlvar?
No. It's not that smart.
You should iterate over your list (dtml-in) to generate an SQL list::
(<dtml-in SelectedIDs><dtml-var sequence-item type="string">,</dtml-in>)
--jcc
_______________________________________________
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 )