欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分析解決Python中sqlalchemy數(shù)據(jù)庫連接池QueuePool異常

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

數(shù)據(jù)庫相關(guān)錯誤的解決辦法

錯誤一:數(shù)據(jù)庫連接池超過限制

SqlAlchemy QueuePool limit overflow

在這里插入圖片描述

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

解決辦法

  • 方法一

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

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

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

如果有不了解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

在數(shù)據(jù)庫操作函數(shù)前加上上面的裝飾器即可解決對應(yīng)的問題

錯誤二:數(shù)據(jù)庫事務(wù)未回滾

在這里插入圖片描述

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

# 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)

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

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

相關(guān)文章

  • 一篇文章帶你了解python標準庫--math模塊

    一篇文章帶你了解python標準庫--math模塊

    這篇文章主要介紹了Python的math模塊中的常用數(shù)學(xué)函數(shù)整理,同時對運算符的運算優(yōu)先級作了一個羅列,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • Pycharm虛擬環(huán)境創(chuàng)建并使用命令行指定庫的版本進行安裝

    Pycharm虛擬環(huán)境創(chuàng)建并使用命令行指定庫的版本進行安裝

    Pycharm創(chuàng)建的項目,使用了虛擬環(huán)境,對庫的版本進行管理,有些項目的對第三方庫的版本要求不同,可使用虛擬環(huán)境進行管理,直接想通過pip命令安裝可以參考下本文的操作步驟
    2022-07-07
  • PPOCRLabel標注的txt格式如何轉(zhuǎn)換成labelme能修改的json格式

    PPOCRLabel標注的txt格式如何轉(zhuǎn)換成labelme能修改的json格式

    這篇文章主要介紹了PPOCRLabel標注的txt格式如何轉(zhuǎn)換成labelme能修改的json格式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 看看如何用Python繪制小米新版天價logo

    看看如何用Python繪制小米新版天價logo

    這篇文章主要介紹了看看如何用Python繪制小米新版天價logo,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • pandas進階教程之Dataframe的apply方法

    pandas進階教程之Dataframe的apply方法

    DataFrame中的apply方法就是將函數(shù)應(yīng)用到由列或行形成的一維數(shù)組上,下面這篇文章主要給大家介紹了關(guān)于pandas進階教程之Dataframe的apply方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • 詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    本文主要介紹了TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式,一種是基于tensor(array),另外一種是迭代器,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python常用的各種排序算法原理與實現(xiàn)方法小結(jié)

    python常用的各種排序算法原理與實現(xiàn)方法小結(jié)

    這篇文章主要介紹了python常用的各種排序算法原理與實現(xiàn)方法,結(jié)合實例形式總結(jié)分析了冒泡排序、插入排序、選擇排序、快速排序等排序算法的相關(guān)原理與實現(xiàn)方法,需要的朋友可以參考下
    2023-04-04
  • python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例

    今天小編就為大家分享一篇python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 使用python實現(xiàn)對元素的長截圖功能

    使用python實現(xiàn)對元素的長截圖功能

    這篇文章主要介紹了用python實現(xiàn)對元素的長截圖功能,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • pygame實現(xiàn)時鐘效果

    pygame實現(xiàn)時鐘效果

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)時鐘效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論