最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分析解決Python中sqlalchemy數據庫連接池QueuePool異常

 更新時間:2021年09月22日 10:08:31   作者:CXYhh121  
這篇文章主要來給大家分析sqlalchemy數據庫連接池QueuePool的異常,給大家用詳細的圖文方式做出了解決的方案,有需要的朋友可以借鑒參考下,希望可以有所幫助

數據庫相關錯誤的解決辦法

錯誤一:數據庫連接池超過限制

SqlAlchemy QueuePool limit overflow

在這里插入圖片描述

造成連接數超過數據庫連接池的限制,有兩方面的原因,第一個是由于數據庫連接池數比較小,因此當連接數稍微增加的時候就會超過限制,另一個原因就是在使用完數據庫連接后未能即使釋放,最后造成數據連接數持續(xù)增加從而超出數據庫連接池的限制,所以我們也可以從這兩個方面來解決這個問題,但是根本上還是得解決后一個原因造成的問題,不然即便是將數據庫連接池增大時間長之后也還是會出現相同的問題。

解決辦法

  • 方法一

python和java都有finally關鍵字,在執(zhí)行完所有代碼之后再執(zhí)行finally處的代碼,有這個關鍵字相助就讓我們能夠很好的解決這個問題,只要在進行完所有的數據庫操作之后將數據庫連接關閉即可。

connection = DBSession.connection()
try:
    rescount = connection.execute("select resource_id,count(resource_id) as total FROM resourcestats")
    #do something
finally:
    connection.close()
  • 方法二

學過python的小可愛們都知道python有個很好用的東西叫做裝飾器,因為方式的解決辦法在針對一個函數操作數據庫的時候還是比較好用的,但是在一個項目中絕對是不止一個操作數據的函數的,如果在每個操作數據庫函數的后方都加上finally關鍵值的話,會顯得很累贅不說,如果有些函數忘記加了也會很麻煩,這個時候裝飾器就顯得很有用了,只要在函數上加上一個關閉數據庫連接的裝飾器,就能夠在所有數據庫操作結束之后關閉數據庫連接

如果有不了解python的裝飾器的可以看一下這個文章:理解Python 裝飾器看這一篇就夠了

def shutdown_session(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        result, msg = func(*args, **kwargs)
        db.session.close()
        db.session.rollback()
        return result, msg
    return wrapper

在數據庫操作函數前加上上面的裝飾器即可解決對應的問題

錯誤二:數據庫事務未回滾

在這里插入圖片描述

查詢報錯:sqlalchemy.exc.InvalidRequestError: Can't reconnect until invalid transaction is rolled back
原因是:連接斷開后,事務沒有回滾,殘留的鎖導致后續(xù)的查詢報錯.sqlalchemy對每一個查詢和插入等操作都是一個事務。

# main.py
from models import OrderInfo 
from sqlalchemy.exc import InvalidRequestError
try:
    order = OrderInfo.query.filter_by(task_id=user_dict.get('task_id')).first()
    order.status = 'COMPLETE'
    db.session.commit()
except InvalidRequestError:
    db.session.rollback()
except Exception as e:
    print(e)

解決:在所有的數據庫操作的時候捕捉異常進行事務的回滾。

以上就是分析解決sqlalchemy數據庫連接池QueuePool異常的詳細內容,更多關于sqlalchemy數據庫連接池QueuePool異常的資料請關注腳本之家其它相關文章!

相關文章

  • Python Flask 搭建微信小程序后臺詳解

    Python Flask 搭建微信小程序后臺詳解

    這篇文章主要介紹了Python Flask 搭建微信小程序后臺,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 基于Python實現Word文檔與SVG格式的相互轉換

    基于Python實現Word文檔與SVG格式的相互轉換

    Word和SVG是兩種常見的文件格式,各自有不同的應用場景,在實際應用中,我們可能需要將Word文檔內容轉換為SVG圖形用于網頁展示,或者將 SVG圖形嵌入到Word文檔中進行編輯和排版,這篇博客將探討如何使用Python實現Word與SVG 格式的相互轉換,需要的朋友可以參考下
    2025-02-02
  • python光學仿真PyQt5基礎框架教程

    python光學仿真PyQt5基礎框架教程

    這篇文章主要為大家介紹了python光學仿真之PyQt5基礎框架教程,文中含有詳細實現示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python判斷對象是否為文件對象(file object)的三種方法示例

    Python判斷對象是否為文件對象(file object)的三種方法示例

    這篇文章主要介紹了Python判斷對象是否為文件對象(file object)的三種方法示例,https://www.pythontab.com/html/2018/pythonhexinbiancheng_1015/1362.html
    2019-04-04
  • PyTorch之怎樣選擇合適的優(yōu)化器和損失函數

    PyTorch之怎樣選擇合適的優(yōu)化器和損失函數

    這篇文章主要介紹了PyTorch怎樣選擇合適的優(yōu)化器和損失函數問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 在Docker上部署Python的Flask框架的教程

    在Docker上部署Python的Flask框架的教程

    這篇文章主要介紹了在Docker上部署Python的Flask框架的教程,包括Docker容器內外的網絡通信等,需要的朋友可以參考下
    2015-04-04
  • 如何實現一個python函數裝飾器(Decorator)

    如何實現一個python函數裝飾器(Decorator)

    這篇文章主要介紹了如何實現一個python函數裝飾器(Decorator),幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-10-10
  • Python如何爬取51cto數據并存入MySQL

    Python如何爬取51cto數據并存入MySQL

    這篇文章主要介紹了Python如何爬取51cto數據并存入MySQL,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 向量化操作改進數據分析工作流的Pandas?Numpy示例分析

    向量化操作改進數據分析工作流的Pandas?Numpy示例分析

    這篇文章主要介紹了向量化操作改進數據分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Python+Tkinter簡單實現注冊登錄功能

    Python+Tkinter簡單實現注冊登錄功能

    這篇文章主要為大家詳細介紹了Python+Tkinter簡單實現注冊登錄功能,連接本地MySQL數據庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

巫山县| 淮阳县| 辽阳县| 永胜县| 五台县| 丰镇市| 通河县| 灌云县| 浦东新区| 天全县| 永清县| 鸡泽县| 平山县| 探索| 石嘴山市| 墨江| 元阳县| 商洛市| 永胜县| 龙口市| 萍乡市| 屯昌县| 扶余县| 博乐市| 什邡市| 安义县| 鲜城| 武城县| 汾阳市| 五指山市| 柳河县| 射洪县| 孝义市| 珠海市| 台北县| 青浦区| 望谟县| 灯塔市| 莱西市| 图木舒克市| 巴青县|