ER: [Zope] Looking if a record with a given key exists in a database several times, in dtml

Steve Spicklemire steve@spvi.com
Wed, 20 Feb 2002 12:50:19 -0500


Also.. it looking a the "result" object code.. it appears you probably 
need to do:

	cache_dict[result['theNameOfTheFieldThatYouWantToBeAkey'] = result

or somesuch..

-steve

On Wednesday, February 20, 2002, at 12:45 PM, Steve Spicklemire wrote:

> Hi Igor,
>
> 	I'm sorry.. "key" was just an example! You've got to use an actual 
> field from your database as a key!
>
> -steve
>
> On Monday, February 18, 2002, at 07:16 AM, Igor Leturia wrote:
>
>>   Hi Steve!
>>
>>   I've tried your suggestion (and I think I've done it correctly), 
>> but I
>> get an error:
>>
>> Zope Error
>> Zope has encountered an error while publishing this resource.
>>
>> Error Type: AttributeError
>> Error Value: key
>>
>>   Any idea?
>>
>> 				Igor Leturia
>>
>>> -----Jatorrizko mezua-----
>>> Nondik: Steve Spicklemire [mailto:steve@spvi.com]
>>> Bidalia: Igandea, 2002.eko otsailak 17 21:13
>>> Nora: Igor Leturia
>>> Cc: Steve Spicklemire; zope@zope.org
>>> Gaia: Re: [Zope] Looking if a record with a given key exists in a
>>> database several times, in dtml
>>>
>>>
>>> Your idea sounds reasonable..  are you asking how to implement
>>> it, or is
>>> there some other problem? I would think you could create a
>>> python script
>>> that returns a dictionary that could be used to lookup results.
>>> Something like:
>>>
>>> buildCache with argument "results"
>>>
>>> cache_dict = {}
>>>
>>> for result in results:
>>> 	cache_dict[result.key] = result
>>>
>>> return cache_dict
>>> -----------------
>>>
>>> called from DTML as:
>>>
>>> <dtml-let theCache="buildCache(results=yourQuery())">
>>> <dtml-in ....>
>>> <dtml-if "theCache.has_key(yourTestKey)">
>>> <dtml-let theResult="theChache[yourTestKey]">
>>> Do something with "theResult"..
>>> </dtml-let>
>>> </dtml-if>
>>> </dtml-in>
>>> </dtml-let>
>>>
>>> Does that help?
>>> -steve
>>> 	
>>> On Sunday, February 17, 2002, at 02:42  PM, Igor Leturia wrote:
>>>
>>>>   Hi all!
>>>>
>>>>   I have a problem: in dtml, I have to iterate through a
>>> very big list
>>>> and for each item I must look if there is a record with that key in a
>>>> database. I can't run a 'select' ZSQLMethod for each,
>>> because it would
>>>> take too long. What I want to do is run the 'select'
>>> ZSQLMethod once and
>>>> load the results in a variable (an array or dictionary)
>>> which then will
>>>> be faster to look up in, or look up in the results of that
>>> query in some
>>>> fast way.
>>>>
>>>>   I have searched zope.org, but found nothing. Any ideas?
>>>>
>>>> 					Igor Leturia
>>>>
>>>> _______________________________________________
>>>> Zope maillist  -  Zope@zope.org
>>>> http://lists.zope.org/mailman/listinfo/zope
>>>> **   No cross posts or HTML encoding!  **
>>>> (Related lists -
>>>>  http://lists.zope.org/mailman/listinfo/zope-announce
>>>>  http://lists.zope.org/mailman/listinfo/zope-dev )
>>>
>>>
>>
>> _______________________________________________
>> Zope maillist  -  Zope@zope.org
>> http://lists.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -
>>  http://lists.zope.org/mailman/listinfo/zope-announce
>>  http://lists.zope.org/mailman/listinfo/zope-dev )