I'm using a pysqlite select statement within a def function and it's not working because (I suspect) the pysqlite variables are not being declared corrrectly to be used within a def function or the def function is not setup correctly. Here is the code followed by the errors:
**** code **** con = sqlite3.connect(":memory:") # create database/table in memory cur = con.cursor() # note: can use the nonstandard execute, executemany to avoid using Cursor object query = "CREATE TABLE db.table(field.a INTEGER, field.b TEXT)" cur.execute(query) query = "INSERT INTO db.table(field.a, field.b) VALUES (?, ?)", data cur.executemany(query) def getResult(q, limit): query = "SELECT field.b FROM db.table WHERE field.b LIKE '%s' LIMIT '%s'" %(q, limit) for row in cur.execute(query): print row return # main program <snip> .. q = <something> limit = <something else> getResult(q, limit) # call getResult with parameters q and limit .. <snip> **** end code **** The error recieved is: Traceback (most recent call last): <snip> for row in cur.execute(query): NameError: global name 'cur' is not defined Some notes: 1. The code works perfectly outside of a def function but I need to have it working within a def. 2. Clearly, everything inside getResults is private unless declared otherwise. As a quick and dirty to force it to work I declared > global con, curs, db.table .. but that results in the same error 3. Moving con and cur into the def statement results in the error: Traceback (most recent call last): <snip> for row in cur.execute(query): OperationalError: no such table: db.table 4. The def getResults is not seeing con, curs and db.table even when declared as global. 5. I wonder if this is something specific to pysqlite. Cheers! Dinesh
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor