0.簡介
本文詳細介紹了如何通過簡單的Python腳步將一個.sql類型的數(shù)據(jù)庫文件寫入到iOS開發(fā)常用的.plist類型的文件中去。該需求來自一個iOS開發(fā)室友的求助,助人為樂,正所謂予人玫瑰,手有余香。平日里天天念叨人生苦短,我用Python,可惜一直沒用上,這是我人生的第一個Python腳本,非常簡單,但是來之不易,請各位且看且珍惜,謝謝。
首先準備工作要先做好,正所謂磨刀不誤砍柴工。工欲善其事,必先利其器。關(guān)于如何“利其器”請參閱:高效MacBook工作環(huán)境配置
1.MySQL 數(shù)據(jù)庫環(huán)境配置
首先下載安裝MySQL ?Workbench客戶端,這是下載地址MySQL下載,界面如下圖:

下載完成后雙擊打開安裝一切行云流水,相信各位小伙伴都能很easy的搞定,不必多言。安裝完成后先別急著打開,再下載一個MySQL數(shù)據(jù)庫的服務(wù)器,這是下載地址MySQL服務(wù)器下載,同樣下載完成后雙擊打開安裝。
提醒:這里我提醒一下,有可能有些小伙伴會遇到如下圖的一個彈出,這個彈窗的大概意思呢是說給你分配了一個默認的root用戶訪問localhost的密碼,這是因為你的電腦沒有root權(quán)限的原因,當然這個密碼比較煩,所以想要去掉密碼的可以自行百度也可以參考這個官方給出的解決方案:How to Reset the Root Password,這里呢就不再贅述了。

這貨安裝好了之后沒有Launch Pad里并不會有任何變動,所以接下來呢我們要先打開“系統(tǒng)偏好設(shè)置”,在最下面會看到MySQL圖標,這個就是剛剛安裝的MySQL服務(wù)器了,如下圖:

二話不說,點它,點開之后如下圖:

裝了它卻關(guān)閉著有個鳥用,干,點擊“Start MySQL Server”來開啟MySQL服務(wù)器,開啟后如下圖:

把MySQL服務(wù)器打開之后呢就可以關(guān)閉這個窗口了(PS:如果沒有勾選上圖中的自啟動的話每次重啟電腦之后都要手動打開該服務(wù)哦?。?/p>
接下來配置數(shù)據(jù)庫了,首先打開MySQL Workbench,如下圖:

點擊“New Connection”來新建一個連接,此處對數(shù)據(jù)庫基礎(chǔ)知識不多說,請不清楚的小伙伴們自行腦補,如下圖:

這里只要輸入連接名稱,請使用英文,其他的保持不變,但是一定要記住,這里的HostName: 127.0.0.1 Port: 3306 Username: root 沒有密碼,后面要用到這些的,此處不作密碼設(shè)置演示了,差不多的相信需要使用帶密碼數(shù)據(jù)庫的小伙伴能夠搞定的。填寫完之后可以點擊下面的“Test Connection”來測試數(shù)據(jù)庫連通情況,出現(xiàn)如下圖所示的彈窗時表示連接正常:

點擊彈窗上的“OK”再點擊新建連接的“OK”,此時一個新的連接就創(chuàng)建完成了,可以看到如下界面:

雙擊這個連接即可打開,如下圖:

到此為止,數(shù)據(jù)庫的配置就暫時告一段落了。路漫漫其修遠兮,大家不要慌,咱們繼續(xù)。
2.終端環(huán)境配置
這里的配置主要是終端訪問MySQL數(shù)據(jù)庫的配置,一般情況下,第一次在終端使用mysql命令時會出現(xiàn)如下情況:

出現(xiàn)該情況的原因是因為雖然上面我們裝了MySQL環(huán)境,但是它所在的路徑與終端查詢命令的路徑不同,解決方案呢是通過增加環(huán)境變量的方式來將MySQL路徑增加到終端命令查詢路徑里就可以了,在系統(tǒng)的.bash_profile中加入“export PATH=${PATH}:/usr/local/mysql/bin”,如下圖:

如果對vim命令不熟悉的小伙伴可以查看我的Vim練級必備或者用其他方式編輯,比如Sublime Text。輸入上圖命令回車后如下圖:

保存退出編輯后使用“source .bash_profile”命令重新加載一次剛配置好的文件,每次改動之后都要使用該命令重新加載一下,如下圖:

好了,現(xiàn)在可以再次執(zhí)行“mysql -uroot”命令了,如下圖:

好了,到此為止,終端關(guān)于MySQL的配置就已經(jīng)完成了,下面做個驗證,先打開MySQL Workbench創(chuàng)建一個數(shù)據(jù)庫,看看能不能在終端里訪問到。
首先在MySQL Workbench中創(chuàng)建一個新的數(shù)據(jù)庫,打開之前配置好的MySQL,如下圖:

點擊上圖中的圖標后如下圖:


一個新的數(shù)據(jù)庫創(chuàng)建完成后是下圖這樣的:

接下來打開之前的終端輸入“show databases;”,如下圖:

好了,到此為止,我們可以在終端訪問數(shù)據(jù)庫了,終端關(guān)于MySQL的配置也告一段落了。希望就在前方,吾將上下而求索,小伙伴們跟著我的節(jié)奏,不要停下你們的腳步。
3.加載.sql文件到本地數(shù)據(jù)庫
一般我們有些常用的數(shù)據(jù)可能會保存到數(shù)據(jù)庫,當然,網(wǎng)上也可以找到很多別人分享的sql數(shù)據(jù)庫文件,那么我們從網(wǎng)上找到這些文件之后該如何查看,或者說如何轉(zhuǎn)換成我們想要的文件呢?接下來我就以跟“度娘”要來的一份各個國家手機代碼的數(shù)據(jù)庫文件為例給大家分享一下如何查看本地數(shù)據(jù)庫文件和數(shù)據(jù)庫文件格式的轉(zhuǎn)換,準確的說應該是將數(shù)據(jù)庫文件中的數(shù)據(jù)讀取出來重新寫入到我們想要的格式文件中。
下載下來的數(shù)據(jù)庫文件呢是這樣子的:

我們呢需要對其做個修改,其實看的懂的小伙伴們已經(jīng)知道這個sql文件只是寫了一句插入數(shù)據(jù)的SQL語句,前面我們說過,界面操作的本質(zhì)還是執(zhí)行SQL語句,所以接下來我們對這個文件做個修改,在文件前面加點東西,修改內(nèi)容如下圖所示:

到這里呢需要使用的文件就準備好了,值得一提的是上圖修改內(nèi)容里有一個“utf8mb4”的編碼,關(guān)于這個編碼方式每個sql數(shù)據(jù)庫文件不是完全相同的,所以如果你導入后發(fā)現(xiàn)數(shù)據(jù)亂碼,那么可以試著修改一下這個編碼方式之后再重新導入。好了,接下來就要加載這個sql文件了,按照下圖繼續(xù)操作:

OK,到這里本地sql文件的加載工作就全部做完了,我們可以打開MySQL Workbench看看我們的勞動成果,可以看到如下結(jié)果:

4.配置Python環(huán)境
話說自Mac OS具體哪個版本來說我也不記得了,系統(tǒng)就已經(jīng)自帶了Python環(huán)境,這里要說明的一點是系統(tǒng)中是可以同時兼容多個Python版本的,所以我們這里為了不影響系統(tǒng)的Python環(huán)境,那么接下來我們自己安裝一個新的Python環(huán)境,安裝命令很簡單,使用brew一句話搞定,具體見下圖,關(guān)于Home brew是什么還不清楚的小伙伴們請自行腦補了,這里我就不多說了,用過Cocoapods,升級過ruby的人都知道,誰用誰知道~~哈哈,言歸正傳,請看下圖:

說明:這里需要說明一下,使用該命令安裝Python默認的路徑是/user/local/bin/python,不需要指定路徑,所以終端工作在什么路徑下并不重要。
Python安裝完成后如下圖:

Python安裝完成后終端可以看到輸出的這些內(nèi)容,其中我紅線框出來的部分稍微解釋一下,第一部分提示我們安裝Python的同時為我們安裝了pip和setuptools,關(guān)于這兩個又是什么鬼還是請大家自行百度,不過我這里說一下這個pip,我們可以把這個pip看成是Python中的“pop”,同樣是用來管理第三方庫的,接下來我們會用到這個。第二部分就提示了我們要如何使用這個pip來安裝Python需要的第三方庫和將會安裝到哪里去。那么不妨我們接下來就使用一下這個pip,安裝一下我們將要使用到的第三方庫,就一個操作MySQL的庫叫MySQL-python,鍵入下圖中的命令:

上圖中‘where python’可以查看到電腦里已安裝的python所在路徑,有兩個表示我的系統(tǒng)里裝了兩個python,‘pip --version’命令就不說了,重要的是使用‘sudo pip install MySQL-python’命令安裝MySQL-python。這是一個操作數(shù)據(jù)庫的,那么呢還需要一個操作plist文件的,所以繼續(xù)往下走,這里對plist文件的操作我們采用biplist這個第三方庫,安裝方式如下圖,使用方式請小伙伴們點擊鏈接移步github自行參閱。

安裝好這個biplist之后我們還需要做一件事情,就是跟之前一樣在.bash_profile中添加一個環(huán)境變量,添加字段“export DYLD_LIBRARY_PATH="/usr/local/mysql/lib"”,如下圖:

好了,到這里為止呢整個Python環(huán)境就基本上配置完成了,不過提醒一下,最后修改完成這個.bash_profile別忘了上面說的要使用“source .bash_profile”命令重新加載一下哦!再次提醒,每一次改動該文件都要重新加載。小伙伴,保持你們的激情,不要停下你們的雙手,跟我一起,油門繼續(xù)往上踩……
5.此時不擼更待何時
接下來就是見證奇跡的時刻,那么在奇跡到來之前我們先做個鋪墊工作,就是打開Xcode創(chuàng)建一個plist文件出來,這個過程我想不用說了吧,小伙伴們自行看圖吧!


創(chuàng)建plist文件完成后做一個如下操作,將創(chuàng)建好的plist的root改為“Array”,為什么做這部操作后面再做解釋。

好了,我們最終需要的文件創(chuàng)建完了,那么就是時候表演真正的技術(shù)了,首先創(chuàng)建一個Python腳本文件,如下圖,直接終端touch一下就完事了。

接下來就要打開這個腳本文件開始Coding了,整個腳本的基本流程是:連接數(shù)據(jù)庫-獲取所有數(shù)據(jù)-格式處理-寫入文件-關(guān)閉連接。具體代碼見下圖:

好了,代碼都寫完了,還能有什么事呢,大功告成99%了,尼瑪,為什么99%呢??因為還沒看到結(jié)果嘛!
6.結(jié)果展示
辛辛苦苦按照上面的步驟一步一步似爪牙的配置下來,是騾子是馬也該拉出來遛遛了,那么好,看一下結(jié)果吧。
首先是腳本運行結(jié)果:

下面是文件內(nèi)容結(jié)果:

好了,看到這里的結(jié)果那么上面差的1%就可以加上了,100%的過程早就100%的結(jié)果,感謝大家的耐心與支持。
說明:這里呢對上面創(chuàng)建plist文件后修改root類型做一個解釋,因為腳本中寫入的數(shù)據(jù)類型是Python中的list,其實這個list就相當于數(shù)組Array,所以修改后寫入數(shù)據(jù)結(jié)構(gòu)更清晰,如果不作修改也是可以的,只不過文件的root是字典,有一個key是“country_codes”對應的value類型是數(shù)組,數(shù)組里每一個item是字典這樣。有興趣的小伙伴可以自行嘗試。
感謝同行朋友@jinsxiong?參與的一起討論,以及他姐夫的數(shù)據(jù)庫相關(guān)技術(shù)指導,謝謝。
由于寫作匆忙錯誤在所難免,希望大家積極指正,相互交流,謝謝大家。