第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Sqlite - 無法在關閉的數據庫上操作

Sqlite - 無法在關閉的數據庫上操作

慕桂英546537 2023-07-11 14:48:14
我正在嘗試使用 python 將一小組行插入 sqlite 并收到錯誤“無法在封閉的數據庫上操作”這是我的代碼片段:import sqlite3from sqlite3 import Errordb_file = "/home/sosuser/mediaserver/camera.db"def create_connection(db_file):    conn = None    try:        conn = sqlite3.connect(db_file)        print(sqlite3.version)    except Error as e:        print(e)    finally:        if conn:            conn.close()    return conndef create_task(conn, task):    sql = ''' INSERT INTO camerainfo(id, cameraid, maplat, maplong, name)              VALUES(?,?,?,?,?) '''              cur = conn.cursor()    cur.execute(sql, task)def prepare_data(conn):    for cam in range(len(camID)):        print(camID[cam])        task = (cam, camID[cam], '12.972442','77.580643','testCAM')        create_task(conn, task)    conn.commit()    conn.close()conn = create_connection(db_file)prepare_data(conn)出現以下錯誤 -Traceback (most recent call last):  File "dumpCamera1.py", line 92, in <module>    prepare_data(conn)  File "dumpCamera1.py", line 86, in prepare_data    create_task(conn, task)  File "dumpCamera1.py", line 79, in create_task    cur = conn.cursor()sqlite3.ProgrammingError: Cannot operate on a closed database.不確定我的連接在哪里被關閉??赡茏隽艘恍┓浅S薮赖氖虑?,但希望得到指點?
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

finally函數中的子句在create_connection返回之前關閉連接。

看起來好像您正在嘗試為連接創(chuàng)建一種上下文管理器,但 sqlite3?Connection已經是上下文管理器了,所以這是不必要的。

你可以做

with?sqlite3.connect(dbfile)?as?conn:
????print(sqlite3.version)
????prepare_data(conn)

退出上下文管理器時,連接將自動關閉。您可以通過將上下文管理器包裝在try/except塊中來捕獲上下文管理器內部引發(fā)的錯誤。


查看完整回答
反對 回復 2023-07-11
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號