Is there a way to creat a func that returns a cursor that can be used?

Terry Reedy tjreedy at udel.edu
Mon Nov 12 15:41:35 EST 2012


On 11/12/2012 7:25 AM, Joel Goldstick wrote:

> Chris gave you the same help that you got yesterday.
...
> go to ://python.org> and read the tutorials,
> specifically about functions.

It is hard to see what is working and not with an empty database. But to 
drive the point home, running

import sqlite3

def connect():
     conn = sqlite3.connect(':memory:')#use sch3.db or sch4.db  .... etc.
     cur = conn.cursor()
     cur.execute("create table schedule (teams integer, sn integer, 
badge integer ,name text, grp integer,\
     major text, track text, stage text,  tc text, subject text, course 
text, ws text, date text, \
     time text, proctor text, code text, no integer,fl_time text, flag2 
text, flag3 text,\
     flag4 text, clash1 integer, clash2 integer)")
     return cur

cur = connect()
print(cur.fetchone())
cur.execute("select * from schedule")
print(cur.fetchall())

# prints
None
[]

So the change suggested by multiple people *does* work ;-).

On a different note: use triple quote for multi-line strings and 
backslashes are not needed.

     cur.execute('''create table schedule (teams integer, sn integer,
             badge integer ,name text, grp integer, major text,
             track text, stage text,  tc text, subject text, course text,
             ws text, date text, time text, proctor text, code text,
             no integer,fl_time text, flag2 text, flag3 text, flag4 text,
             clash1 integer, clash2 integer)''')

works fine. SQL treats newlines in statements as whitespace.

-- 
Terry Jan Reedy




More information about the Python-list mailing list