亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python SQLAlchemy 中的Engine詳解

系統 1924 0

先看這張圖,這是從官方網站扒下來的。

python SQLAlchemy 中的Engine詳解_第1張圖片

Engine 翻譯過來就是引擎的意思,汽車通過引擎來驅動,而 SQLAlchemy 是通過 Engine 來驅動,Engine 維護了一個連接池(Pool)對象和方言(Dialect)。方言簡單而言就是你連的到底是 MySQL 還是 Oracle 或者 PostgreSQL 還是其它數據庫,關于方言(Dialect)的介紹在另外一篇文章有介紹,可參考數據庫方言dialect。

連接池很重要,因為每次發送sql查詢的時候都需要先建立連接,如果程序啟動的時候事先就初始化一批連接放在連接池,每次用完后又放回連接池給其它請求使用,就能大大提高查詢的效率。

Engine 初始化

Engine 的初始化非常簡單,通過工廠函數 create_engine 就可以創建。

            
from sqlalchemy import create_engine

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

構建好 Engine 對象的同時,連接池和Dialect也創建好了,但是這時候并不會立馬與數據庫建立真正的連接,只有你調用 Engine.connect() 或者 Engine.execute(sql) 執行SQL請求的時候,才會建立真正的連接。因此 Engine 和 Pool 的行為稱之為延遲初始化,用現在流行的話來說就是延遲滿足感,等真正要派上用場的時候才去建立連接。

需要注意的是,創建引擎時,如果數據庫的密碼含有特殊字符,需要先編碼處理

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

其它數據庫方言初始化 engine 的方式可參考官方文檔

create_engine 還有很多可選參數,這里介紹幾個重要的參數。

            
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 時候會把sql語句打印出來,當然,你可以通過配置logger來控制輸出,這里不做討論。

pool_size : 是連接池的大小,默認為5個,0表示連接數無限制

pool_recycle : MySQL 默認情況下如果一個連接8小時內容沒有任何動作(查詢請求)就會自動斷開鏈接,出現 MySQL has gone away的錯誤。設置了 pool_recycle 后 SQLAlchemy 就會在指定時間內回收連接。如果設置為3600 就表示 1小時后該連接會被自動回收。

pool_pre_ping : 這是1.2新增的參數,如果值為True,那么每次從連接池中拿連接的時候,都會向數據庫發送一個類似 select 1 的測試查詢語句來判斷服務器是否正常運行。當該連接出現 disconnect 的情況時,該連接連同pool中的其它連接都會被回收。

參考鏈接:

  • https://docs.sqlalchemy.org/en/14/core/engines.html#database-urls
  • https://stackoverflow.com/questions/34322471/sqlalchemy-engine-connection-and-session-difference
  • https://docs.sqlalchemy.org/en/13/core/pooling.html#dealing-with-disconnects

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费观看呢日本天堂视频 | 久久免费播放视频 | 亚洲免费精品视频 | 视频国产在线 | 亚洲欧美日韩综合一区久久 | 毛片毛片毛片毛片毛片毛片毛片 | 中文字幕最新中文字幕中文字幕 | 久久精品三级视频 | 久久久久9 | 日韩免费视频观看 | 国产黄毛片 | 国产成人一区二区三区在线播放 | 亚洲国产成人资源在线桃色 | 国内精品51视频在线观看 | 日本一区二区三区在线 观看网站 | 99国内精品 | 不卡网| 久久综合久久自在自线精品自 | 国产精品天天干 | 色综合久久精品中文字幕首页 | 四虎com | 香蕉国产一区二区 | 精品国产97在线观看 | 91亚洲精品一区二区福利 | 国产精品国产三级国产普通话 | 国产欧美一区二区三区精品 | 99网站 | 女人18一级特级毛片免费看 | 婷婷色香五月激情综合2020 | 色偷偷亚洲第一成人综合网址 | 欧美日韩一卡二卡 | 五月婷婷在线观看 | 亚洲我射 | 久久久青青久久国产精品 | 一区二区三区精品国产欧美 | 欧美日本黄色 | 国产色婷婷精品综合在线手机播放 | 欧美日韩一卡二卡 | 亚洲五月综合缴情婷婷 | 涩综合 | 亚洲精品乱码国产精品乱码 |