SQLAlchemy異常捕捉

我們在使用SQLAlchemy模塊進行數據操作過程,往往會出現一些錯誤,因此我們需要捕捉到這些錯誤,並進行一場處理。

例子如下:

from sqlalchemy.exc import SQLAlchemyError
db = SQLAlchemy()
def commit():
    try:
        db.session.add(self.table)
        db.session.commit()

    except SQLAlchemyError as e:
        db.session.rollback()

    finally:
        db.session.close()

下面是sqlalchemy本身可能引發的錯誤列表,這些錯誤來自 help(sqlalchemy.exc) 和 help(sqlalchemy.orm.exc):

sqlalchemy.exc系列:
ArgumentError----------------------------在提供無效或衝突的函數參數時引發。
CircularDependencyError------------------檢測到循環依賴項時由拓撲排序引發。
CompileError-----------------------------在SQL編譯期間發生錯誤時引發。
ConcurrentModificationError--------------同步修改數據發生錯誤時引發。
DBAPIError-------------------------------數據庫操作執行失敗時引發。 如果在執行SQL時發生錯誤引發操作 語句,該語句及其參數將在 statement和params屬性中的異常對象。 包裝的異常對象在orig屬性中可用。 它的類型和屬性是特定於DB-API實現的。
DataError包裝DB-APIDataError。
DatabaseError----------------------------包裝DB-APIDatabaseError。
DisconnectionError-----------------------在原始DB-API連接上檢測到斷開連接。 由PoolListener引發,以便主機池強制斷開連接。
IdentifierError--------------------------當架構名稱超過最大字符限制時引發
IntegrityError---------------------------包裝DB-APIIntegrityError。
InterfaceError---------------------------包裝DB-APIInterfaceError。
InternalError----------------------------包裝DB-APIInternalError。
InvalidRequestError----------------------SQLAlchemy被要求做一些它不能做的事情。此錯誤通常對應於運行時狀態錯誤。
NoReferenceError-------------------------由ForeignKey引發,表示無法解析引用。
NoReferencedColumnError------------------在找不到引用的Column時由ForeignKey引發。
NoReferencedTableError-------------------在找不到引用的Table時由ForeignKey引發。
NoSuchColumnError------------------------從RowProxy請求不存在的列。
NoSuchTableError-------------------------表不存在或對連接不可見。
NotSupportedError------------------------包裝DB-APINotSupportedError。
OperationalError-------------------------包裝DB-APIOperationalError。
ProgrammingError-------------------------包裝DB--APIProgrammingError。
SADeprecationWarning---------------------每次使用不推薦的API時發佈一次。
SAPendingDeprecationWarning--------------每次使用不推薦的API時發佈一次。
SAWarning--------------------------------在運行時發出。
SQLAlchemyError--------------------------一般錯誤類。
SQLError---------------------------------數據庫操作執行失敗時引發。
TimeoutError-----------------------------當連接池在獲取連接時超時時引發。
UnboundExecutionError--------------------嘗試在沒有數據庫連接的情況下執行SQL。
UnmappedColumnError----------------------對未知列請求了映射操作。


sqlalchemy.orm.exc系列:
FlushError-------------------------------後期修改表字段的時候,不會自動的映射到數據庫中,需要重新映射,使用flask-migrate。
ConcurrentModificationError--------------行已在工作單元之外被修改。
FlushError-------------------------------在flush()期間檢測到無效條件。
MultipleResultsFound---------------------需要一個數據庫結果,但找到多個。
NoResultFound----------------------------需要數據庫結果,但未找到。
ObjectDeletedError-----------------------Arefresh()操作無法重新檢索對象的行。
UnmappedClassError-----------------------爲未知類請求了映射操作。
UnmappedColumnError----------------------對未知列請求了映射操作。
UnmappedError----------------------------待辦事項
UnmappedInstanceError--------------------爲未知實例請求了映射操作。

結束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章