用pymysql模塊連接mysql時遇到一點問題,眾所周知,最常見的連接數(shù)據(jù)庫方式有無外乎以下2種:
連接方式一:
連接方式(一).jpg
為了程序的簡潔雅觀,可以將connect()中的參數(shù)定義在一個字典類型的對象config中,然后將這個字典對象傳進connect方法中,如下圖所示:
連接方式二:
連接方式(二).jpg
但是,出于好奇,查看connect()方法的官方幫助文檔時,發(fā)現(xiàn)connect()的參數(shù)有兩個:args和kwargs,分別以不定長參數(shù)形式呈現(xiàn),然后我就納悶了:這個args不定長參數(shù)是用來干嘛的???
connect官方文檔.jpg
經(jīng)過幾番查詢和調(diào)試,發(fā)現(xiàn)args的作用是,補充kwargs中連接數(shù)據(jù)庫時用到的多種參數(shù),如下圖所示:
連接方式三:
連接方式(三).jpg釋疑:從上圖代碼可以看出,如果config字典中只給出了主機名、數(shù)據(jù)庫賬戶名,那么顯然是連接不上數(shù)據(jù)庫的,這時候我們?nèi)绻幌朐赾onfig中增加其他參數(shù)的話,可以將這些參數(shù)寫進另一個字典類型的config1對象中,然后按照元組形式的不定長參數(shù)用法,將config和config1傳到connect()中去,這樣connect就獲取了一個完整的數(shù)據(jù)庫連接配置文件,從而成功建立起連接,如下圖所示:(mysql依然可以正常連接)
connect()的傳參.jpg
總結(jié):
- 推薦第二種連接方式,簡潔優(yōu)雅;
- 在pymysql中,這三種數(shù)據(jù)庫連接對象是等價的:connect=Connection=Connect,建議使用connect;