zoukankan      html  css  js  c++  java
  • 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--------------------为未知实例请求了映射操作。

    结束!

  • 相关阅读:
    【BZOJ5286】[HNOI2018]转盘(线段树)
    【BZOJ2003】[HNOI2010]矩阵(搜索)
    【BZOJ2000】[HNOI2000]取石头游戏(贪心,博弈论)
    【BZOJ1998】[HNOI2010]物品调度(并查集,模拟)
    【BZOJ2001】[HNOI2010]城市建设(CDQ分治,线段树分治)
    【BZOJ1925】[SDOI2010]地精部落(动态规划)
    【BZOJ1856】[SCOI2010]字符串(组合数学)
    【BZOJ1826】[JSOI2010]缓存交换(贪心)
    【BZOJ1823】[JSOI2010]满汉全席(2-sat)
    【BZOJ1822】[JSOI2010]冷冻波(二分,网络流)
  • 原文地址:https://www.cnblogs.com/aaronthon/p/15103270.html
Copyright © 2011-2022 走看看