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--------------------為未知實例請求了映射操作。

結束!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM