首页 > 解决方案 > 生成器中的 Python DBAPI 游标 fetchmany 过早关闭

问题描述

import dbapi2
conn = dbapi2.connect("db", autocommit=True)

def fetch_generator():
    cursor = conn.cursor()
    for res in cursor.execute('select * from table'):
        yield res

def generator_1():
    for x in fetch_generator():
        yield x

def generator_2():
    for x in generator_1():
        yield x

if __name__ == '__main__':
    for x in generator_2():
        print(x)

这会引发错误for x in fetch_generator()

错误:dbapi2.InterfaceError: Attempted to use a closed cursor

为什么游标会随着生成器链关闭?是范围问题吗?上下文管理器是一种解决方案吗?我如何防止光标自动拥有delclose调用它 - 不确定何时 - 并保持打开状态。

标签: pythonsqlitegeneratorpython-db-api

解决方案


推荐阅读