[Zope] formatting tuple to feed to mysql

J Cameron Cooper zope-l at jcameroncooper.com
Mon May 9 19:10:21 EDT 2005


David Siedband wrote:
> 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


More information about the Zope mailing list