python - 生成器中的 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
为什么游标会随着生成器链关闭?是范围问题吗?上下文管理器是一种解决方案吗?我如何防止光标自动拥有del
或close
调用它 - 不确定何时 - 并保持打开状态。
解决方案
推荐阅读
- rollup - PostCSS 和汇总
- javascript - javascript .filter 只匹配第一个数组项
- html - CSS:重复样式或保持相同
- c - 客户端程序不会继续前进
- javascript - 使用 .filter 方法删除函数
- xml - 使用自定义顺序的 XML 排序
- javascript - 快速/节点获取的套接字挂起错误
- python - 即使在标记化之后,Keras pad_sequences 也会失败
- powershell - Visual Studio 2019 Powershell 中的 Enter-VsDevShell 给出错误 FileNotFoundException
- ios - 如果 Swift 中有两个不同的类符合 CBCentralManagerDelegate 或 CBPeripheralManagerDelegate 协议,这是否有意义?