連接示例:
conn = pymysql.connect(host=host,user=user,password=passwd,db=db,port=int(prot),charset='utf8mb4')
pymysq源代碼:
創(chuàng)建連接的源代碼如下,可根據(jù)注釋參考param host自行添加所需參數(shù)。
pymsql
示例:
bind=create_engine(“mysql+pymysql://username:password@ip:port/database?charset=charset”, echo_pool=False)
sqlalchemy源代碼:
數(shù)據(jù)庫(kù)初始化源代碼如下,可根據(jù)注釋參考param echo_pool自行添加所需參數(shù)。
如果我們使用了Flask框架,可以使用flask_sqlalchemy作為數(shù)據(jù)庫(kù)訪問(wèn)組件,它可以幫助我們生成數(shù)據(jù)庫(kù)模型、管理連接池等等。
示例:
app.config['SQLALCHEMY_DATABASE_URI'] = “mysql+pymysql://username:password@ip:port/database?charset=utf8mb4”
db = SQLAlchemy(app)
flask_sqlalchemy源代碼:
源代碼如下,可參考“SQLALCHEMY_DATABASE_URI”根據(jù)需要自行添加參數(shù):
當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,或者默認(rèn)連接池配置無(wú)法滿足業(yè)務(wù)需求時(shí),程序中可能會(huì)拋出數(shù)據(jù)庫(kù)相關(guān)異常,如下圖所示:
這時(shí)我們可以打開(kāi)日志輸出,方便定位問(wèn)題調(diào)整參數(shù)配置。
例如:
echo_pool設(shè)置為”debug”可以打開(kāi)數(shù)據(jù)庫(kù)連接池相關(guān)日志,方便調(diào)整連接池參數(shù)。
打開(kāi)連接池日志后,我們可以看到類似下圖所示的日志輸出:
echo設(shè)置為True時(shí),可輸出sql語(yǔ)句詳細(xì)日志。
connect_args 中的read_timeout可設(shè)置數(shù)據(jù)庫(kù)連接讀操作的超時(shí)時(shí)間,避免數(shù)據(jù)庫(kù)網(wǎng)絡(luò)異常時(shí)長(zhǎng)時(shí)間等待,一般默認(rèn)為30秒,示例中我們把超時(shí)時(shí)間設(shè)置為3秒。
sqlalchemy參數(shù)調(diào)整示例:
bind=create_engine(“mysql+pymysql://username:password@ip:port/database?charset=charset”,echo_pool=“debug”,echo=True ,connect_args={'read_timeout': 3})
flask_sqlalchemy參數(shù)調(diào)整示例:
app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'echo':True,'echo_pool':'debug','connect_args':{'read_timeout': 3}
聯(lián)系客服