2019-08-15

Python 3 : SQLite3的存取基本步驟,及異常錯誤處理 (try ... except ... )

  1. 參考資料:
  2. 在Python 3 環境下,使用SQLilte3,對資料庫操作的基本步驟(一般原則):
    1. 用sqlite3.connect("資料庫檔名.副檔名") 建立資料庫連線,並將這個連線物件指定給一個連線物件變數,例如:oConn=sqlite3.connect("資料庫檔名.副檔名")
    2. 建立連線物件的cursor物件,例如:cTest=oConn.cursor()  
    3. 執行SQL命令,將結果以tuple資料組存放在cursor物件內。例如:cTest.execute("SQL命令")  
    4. 取得目標資料集,例如:oTest=cTest.fetchall()  
    5. 處理取得的資料集,例如:for aTest in oTest :
    6. 關閉資料庫連線,例如:oConn.close()  
  3. 對於不需要return回傳執行結果的資料庫操作,可以簡化操作步驟,如下:
    1. 建立資料庫連線,例如:oConn=sqlite3.connect("資料庫檔名.副檔名")
    2. 執行SQL命令,例如:oConn.execute("SQL命令")  
    3. 更新資料庫,例如:oConn.commite()  
  4. cursor物件是一個指標物件,cursor物件執行SQL命令後,會將結果存放在cursor物件內,並可透過fetchone, fetchmany, fetchall ... 等方法或函數來操作cursor物件內的資料。
    一個資料庫連線的使用過程,可以根據目的需求的不同,建立多個cursor物件來使用,不同名稱的cursor物件,如果不再使用可給予關閉close()。同一個cursor物件,可以透過不同的命令執行,賦予不同的資料內容。
    使用VS code 可以快速瀏覽sqlite3 cursor可以使用的方法、屬性...
  5. 可以使用 VS Code,查看Python 有哪些處理 SQLite 錯誤例外異常的類別,例如;Error, DatabaseErrot, DataError, ProgrammingError ...,在不分開測試錯誤類別來源的情況下,可以使用預設的異常錯誤例外處理 Exception ...
    import sqlite3
    oConn=sqlite3.connect("test.db")
    zSQL="UPDATE T SET T2='5',T3='8' WHERE T1='1' "
    try:
        oConn.execute(zSQL)
    except sqlite3.DataError as d:
        print("d=",d)
    except sqlite3.DatabaseError as de:
        print("de=",de)
    except sqlite3.Error as e:
        print("e=",e)
    except Exception as ex:
        print("ex=",ex)
    oConn.commit()

    #de= database is locked

  6. 適度地在SQLite的CRUD操作上使用try ... except ...,可以確保程式持續執行,或在執行過程排除異常、錯誤...。

沒有留言:

張貼留言