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

python SQLAlchemy 中的Engine詳解

 更新時(shí)間:2019年07月04日 10:20:08   作者:FOOFISH-PYTHON之禪  
這篇文章主要介紹了python SQLAlchemy 中的Engine詳解,Engine 翻譯過(guò)來(lái)就是引擎的意思,汽車通過(guò)引擎來(lái)驅(qū)動(dòng),而 SQLAlchemy 是通過(guò) Engine 來(lái)驅(qū)動(dòng),Engine 維護(hù)了一個(gè)連接池(Pool)對(duì)象和方言(Dialect),需要的朋友可以參考下

先看這張圖,這是從官方網(wǎng)站扒下來(lái)的。

Engine 翻譯過(guò)來(lái)就是引擎的意思,汽車通過(guò)引擎來(lái)驅(qū)動(dòng),而 SQLAlchemy 是通過(guò) Engine 來(lái)驅(qū)動(dòng),Engine 維護(hù)了一個(gè)連接池(Pool)對(duì)象和方言(Dialect)。方言簡(jiǎn)單而言就是你連的到底是 MySQL 還是 Oracle 或者 PostgreSQL 還是其它數(shù)據(jù)庫(kù),關(guān)于方言(Dialect)的介紹在另外一篇文章有介紹,可參考數(shù)據(jù)庫(kù)方言dialect。

連接池很重要,因?yàn)槊看伟l(fā)送sql查詢的時(shí)候都需要先建立連接,如果程序啟動(dòng)的時(shí)候事先就初始化一批連接放在連接池,每次用完后又放回連接池給其它請(qǐng)求使用,就能大大提高查詢的效率。

Engine 初始化

Engine 的初始化非常簡(jiǎn)單,通過(guò)工廠函數(shù) create_engine 就可以創(chuàng)建。

from sqlalchemy import create_engine

engine = create_engine('mysql://user:password@localhost:3306/test?charset=utf8mb4')

構(gòu)建好 Engine 對(duì)象的同時(shí),連接池和Dialect也創(chuàng)建好了,但是這時(shí)候并不會(huì)立馬與數(shù)據(jù)庫(kù)建立真正的連接,只有你調(diào)用 Engine.connect() 或者 Engine.execute(sql) 執(zhí)行SQL請(qǐng)求的時(shí)候,才會(huì)建立真正的連接。因此 Engine 和 Pool 的行為稱之為延遲初始化,用現(xiàn)在流行的話來(lái)說(shuō)就是延遲滿足感,等真正要派上用場(chǎng)的時(shí)候才去建立連接。

需要注意的是,創(chuàng)建引擎時(shí),如果數(shù)據(jù)庫(kù)的密碼含有特殊字符,需要先編碼處理

>>> import urllib.parse
>>> urllib.parse.quote_plus("kx%jj5/g")
'kx%25jj5%2Fg'

其它數(shù)據(jù)庫(kù)方言初始化 engine 的方式可參考官方文檔

create_engine 還有很多可選參數(shù),這里介紹幾個(gè)重要的參數(shù)。

engine = create_engine('mysql://user:password@localhost:3306/test?charset=utf8mb4',
   echo=False
   pool_size=100,
   pool_recycle=3600,
   pool_pre_ping=True)

echo :為 True 時(shí)候會(huì)把sql語(yǔ)句打印出來(lái),當(dāng)然,你可以通過(guò)配置logger來(lái)控制輸出,這里不做討論。

pool_size: 是連接池的大小,默認(rèn)為5個(gè),0表示連接數(shù)無(wú)限制

pool_recycle: MySQL 默認(rèn)情況下如果一個(gè)連接8小時(shí)內(nèi)容沒(méi)有任何動(dòng)作(查詢請(qǐng)求)就會(huì)自動(dòng)斷開(kāi)鏈接,出現(xiàn) MySQL has gone away的錯(cuò)誤。設(shè)置了 pool_recycle 后 SQLAlchemy 就會(huì)在指定時(shí)間內(nèi)回收連接。如果設(shè)置為3600 就表示 1小時(shí)后該連接會(huì)被自動(dòng)回收。

pool_pre_ping : 這是1.2新增的參數(shù),如果值為True,那么每次從連接池中拿連接的時(shí)候,都會(huì)向數(shù)據(jù)庫(kù)發(fā)送一個(gè)類似 select 1 的測(cè)試查詢語(yǔ)句來(lái)判斷服務(wù)器是否正常運(yùn)行。當(dāng)該連接出現(xiàn) disconnect 的情況時(shí),該連接連同pool中的其它連接都會(huì)被回收。

參考鏈接:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python子類繼承父類構(gòu)造函數(shù)詳解

    Python子類繼承父類構(gòu)造函數(shù)詳解

    在本文里我們給大家分享一篇關(guān)于Python 子類繼承父類構(gòu)造函數(shù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • Python圖像處理之圖像與視頻處理基礎(chǔ)教程

    Python圖像處理之圖像與視頻處理基礎(chǔ)教程

    這篇文章主要介紹了Python圖像處理之圖像與視頻處理基礎(chǔ)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)日期間的工作日天數(shù)

    Python+SeaTable實(shí)現(xiàn)計(jì)算兩個(gè)日期間的工作日天數(shù)

    在實(shí)際的項(xiàng)目管理、任務(wù)管理、工作計(jì)劃等場(chǎng)景中,某些時(shí)間段會(huì)涉及雙休日、法定節(jié)假日,甚至還有公司自定義的工作時(shí)間安排,所以就需要計(jì)算出兩個(gè)日期間的實(shí)際工作日天數(shù)。本文用Python+SeaTable實(shí)現(xiàn)這一需求,需要的可以參考一下
    2022-07-07
  • Python學(xué)習(xí)之時(shí)間包使用教程詳解

    Python學(xué)習(xí)之時(shí)間包使用教程詳解

    本文主要介紹了Python中的內(nèi)置時(shí)間包:datetime包?與?time包?,通過(guò)學(xué)習(xí)時(shí)間包可以讓我們的開(kāi)發(fā)過(guò)程中對(duì)時(shí)間進(jìn)行輕松的處理,快來(lái)跟隨小編一起學(xué)習(xí)一下吧
    2022-03-03
  • Python+Tensorflow+CNN實(shí)現(xiàn)車牌識(shí)別的示例代碼

    Python+Tensorflow+CNN實(shí)現(xiàn)車牌識(shí)別的示例代碼

    這篇文章主要介紹了Python+Tensorflow+CNN實(shí)現(xiàn)車牌識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    本文主要介紹了python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • python中提高pip install速度

    python中提高pip install速度

    本文給大家分享了如何提高pip install速度的方法,其實(shí)就是將默認(rèn)源替換為國(guó)內(nèi)高速的源,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2020-02-02
  • python裝飾器-限制函數(shù)調(diào)用次數(shù)的方法(10s調(diào)用一次)

    python裝飾器-限制函數(shù)調(diào)用次數(shù)的方法(10s調(diào)用一次)

    下面小編就為大家分享一篇python裝飾器-限制函數(shù)調(diào)用次數(shù)的方法(10s調(diào)用一次),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python中整數(shù)的緩存機(jī)制講解

    Python中整數(shù)的緩存機(jī)制講解

    今天小編就為大家分享一篇關(guān)于Python中整數(shù)的緩存機(jī)制講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Python 尋找局部最高點(diǎn)的實(shí)現(xiàn)

    Python 尋找局部最高點(diǎn)的實(shí)現(xiàn)

    今天小編就為大家分享一篇Python 尋找局部最高點(diǎn)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

赤峰市| 米脂县| 和田县| 安溪县| 探索| 十堰市| 灵璧县| 大英县| 武邑县| 永新县| 永德县| 衡水市| 五大连池市| 吉首市| 灵山县| 濮阳市| 盈江县| 广安市| 茶陵县| 上栗县| 台山市| 鸡东县| 城市| 连州市| 东兴市| 祁门县| 普兰店市| 桃园县| 那曲县| 东港市| 华蓥市| 赞皇县| 龙海市| 福泉市| 齐河县| 渝中区| 兴国县| 平邑县| 景泰县| 土默特右旗| 改则县|