0

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!

10
  • What database are you using? Commented Nov 22, 2015 at 21:40
  • Ahh. I know. What is your file name that contains that code? Commented Nov 22, 2015 at 21:42
  • The database code? It is product.db Commented Nov 22, 2015 at 21:43
  • No, your python code. I think you have a name clash somewhere. Commented Nov 22, 2015 at 21:44
  • The file is called sqlitedb.py. Interesting to think that it could be a naming clash... Commented Nov 22, 2015 at 21:47

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.