Python, почему не работает менеджер контекста для курсора sqlite3?

Это должно работать, но просто говорит об отсутствии таблицы запасов - должно быть, потеряно соединение где-то внутри контекстного менеджера?

import sqlite3
from contextlib import contextmanager

@contextmanager
def doquery(conn, q, params=()):
    c = conn.cursor()
    c.execute(q, params)
    conn.commit()
    yield c    
    c.close()

with sqlite3.connect(':memory:') as db:    
    doquery(db,'''create table stocks
    (date text, trans text, symbol text,
    qty real, price real)''')

    doquery(db,"""insert into stocks
          values ('2006-01-05','BUY','RHAT',100,35.14)""")

    with doquery(db, 'select * from stocks') as r:
        for row in r:
            print row
7
задан user1315373 5 April 2012 в 13:20
поделиться