[Zope] Searching a Gadfly database

Fernando Martins fmartins@hetnet.nl
Wed, 26 Mar 2003 23:25:49 +0100


Matthew Lindfield Seager wrote:
[...]
> The manual says something about using python and regular expressions or
> something instead of "LIKE" but it's enough of a battle for me puzzling
> out this Zope stuff let alone learning some Python too...
>

a) Consider a Gadfly table User(ID, Name, ...) and you want to search for
names in it.

b) Make a Z SQL called Names, which retrieves the Primary Key and the field
where you want to search, like this:

 Select ID, Name from User

c) Have a form with an input field called 'name' and  a submit button
calling  findName.

d) Create a Python Script called findName with code like this:
_________
rs = container.qryNames()           # retrieve ALL the records
ids = []                            # make an empty list
for rec in rs:                      # loop over all the records
    if rec.NAME.find(name) > -1:    # found a sub-string in the current
record?
        ids.append(rec.STAFFID)     # append it to the list
return ids
__________

AND an argument called 'name'

That's it. You can use the list with ids in a zope page template or a dtml
page to show, e.g., the full records.

Look for 'sequences' and strings in Python docs. You can also use list
comprehension instead of the loop. Probably faster.

HTH,
Fernando