sokeefe
sokeefe

Reputation: 637

Searching for a string with Web.py

I'm trying to build a python function with web.py and SQLite that will allow users to search for a given string within a description field and will return all matching results.

Right now I've gotten to the below function, which works but only if the input is an exact match.

def getItem(params, max_display):
    query_string = 'SELECT * FROM items WHERE 1=1'
    description = params['description']

    if params['description']:
        query_string = query_string + ' AND description LIKE $description'
result = query(query_string, {
    'description': params['description']

I've tried to implement this feature with LIKE "%$description%"' , however I keep getting the below web.py error.

Traceback (most recent call last):
  File "lib/web/wsgiserver/__init__.py", line 1245, in communicate
    req.respond()
  File "lib/web/wsgiserver/__init__.py", line 775, in respond
    self.server.gateway(self).respond()
  File "lib/web/wsgiserver/__init__.py", line 2018, in respond
    response = self.req.server.wsgi_app(self.env, self.start_response)
  File "lib/web/httpserver.py", line 306, in __call__
    return self.app(environ, xstart_response)
  File "lib/web/httpserver.py", line 274, in __call__
    return self.app(environ, start_response)
  File "lib/web/application.py", line 279, in wsgi
    result = self.handle_with_processors()
  File "lib/web/application.py", line 249, in handle_with_processors
    return process(self.processors)
  File "lib/web/application.py", line 246, in process
    raise self.internalerror()
  File "lib/web/application.py", line 478, in internalerror
    return debugerror.debugerror()
  File "lib/web/debugerror.py", line 305, in debugerror
    return web._InternalError(djangoerror())
  File "lib/web/debugerror.py", line 290, in djangoerror
    djangoerror_r = Template(djangoerror_t, filename=__file__, filter=websafe)
  File "lib/web/template.py", line 846, in __init__
    code = self.compile_template(text, filename)
  File "lib/web/template.py", line 926, in compile_template
    ast = compiler.parse(code)
  File "/Users/sokeefe/homebrew/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/compiler/transformer.py", line 51, in parse
    return Transformer().parsesuite(buf)
  File "/Users/sokeefe/homebrew/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/compiler/transformer.py", line 128, in parsesuite
    return self.transform(parser.suite(text))
AttributeError: 'module' object has no attribute 'suite'

Any thoughts on what might be going wrong with this function?

Thanks in advance!

Upvotes: 0

Views: 111

Answers (1)

7stud
7stud

Reputation: 48649

What do you think is going on with parser.py?

Here is the relevant portion of the error message:

File "/Users/sokeefe/homebrew/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/compiler/transformer.py", line 128, in parsesuite return self.transform(parser.suite(text)) AttributeError: 'module' object has no attribute 'suite'

So, somewhere there is a file called parser.py, which defines a function called suite(), which is used by some library code that executes when your program executes. But because you named one of your files parser.py, when the library code executes, python searches for a file named parser.py, and python found your file first, and there was no function named suite() in your file.

Upvotes: 1

Related Questions