【问题标题】:python question :sqlite3.ProgrammingError: Cannot operate on a closed cursorpython问题:sqlite3.ProgrammingError:无法对关闭的游标进行操作
【发布时间】:2021-02-21 11:18:09
【问题描述】:

我写了一个数据库选择函数

def select_data():
    conn = sqlite3.connect(dbpath)
    cur = conn.cursor()
    sql = "select VC_FUNDCODE from data_ds limit 100;"
    fund_list = cur.execute(sql)
    cur.close()
    conn.close()
    return fund_list    

fund_list = select_data()
datalist = []
for item in fund_list:
    datalist.append(item)
print(datalist)

当我尝试调用它时,解释器返回一个回溯:

Traceback(最近一次调用最后一次): 文件“/Users/chinalife/Desktop/source/flaskTiantian/database.py”,第 70 行,在 对于fund_list中的项目: sqlite3.ProgrammingError: 无法对关闭的游标进行操作。

【问题讨论】:

  • 您在收到结果之前关闭游标。当你迭代它时会发生这种情况,而不是在你运行 execute() 时。
  • 好的,看看错误信息在哪里谈到了“关闭的光标”?用您自己的话来说,您认为光标是什么?你认为关闭它意味着什么,你认为它应该有什么影响?你的代码在哪里写cur.close(),你为什么写它,你认为它是做什么的?
  • 非常感谢!我真的受到了启发并得到了解决方案。另外,这是我的第一个任务,你们对我很友好,再次感谢。

标签: python database


【解决方案1】:

谢谢大家,也许这是一个简单的问题,但我很高兴我能弄清楚,这是我更正的代码:

# 
def select_data():
    conn = sqlite3.connect(dbpath)
    cur = conn.cursor()
    sql = "select VC_FUNDCODE from data_ds limit 100;"
    fund_list = cur.execute(sql)
    datalist = []
    for item in fund_list:
        datalist.append(item)
    print(datalist)
    cur.close()
    conn.close()
    return datalist

datalist = select_data()
print(datalist)

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 1970-01-01
    • 2014-12-25
    • 2017-10-11
    • 2013-03-26
    • 2015-01-17
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多