人生苦短 我用Python——iOS開發(fā)之.sql文件轉(zhuǎn).plist文件

0.簡(jiǎn)介

本文詳細(xì)介紹了如何通過簡(jiǎn)單的Python腳步將一個(gè).sql類型的數(shù)據(jù)庫(kù)文件寫入到iOS開發(fā)常用的.plist類型的文件中去。該需求來自一個(gè)iOS開發(fā)室友的求助,助人為樂,正所謂予人玫瑰,手有余香。平日里天天念叨人生苦短,我用Python,可惜一直沒用上,這是我人生的第一個(gè)Python腳本,非常簡(jiǎn)單,但是來之不易,請(qǐng)各位且看且珍惜,謝謝。

首先準(zhǔn)備工作要先做好,正所謂磨刀不誤砍柴工。工欲善其事,必先利其器。關(guān)于如何“利其器”請(qǐng)參閱:高效MacBook工作環(huán)境配置

寫在前面:這是該項(xiàng)目中使用到的sql文件:sql文件? 這是轉(zhuǎn)換之后的plist文件:plist文件

1.MySQL 數(shù)據(jù)庫(kù)環(huán)境配置

首先下載安裝MySQL ?Workbench客戶端,這是下載地址MySQL下載,界面如下圖:

MySQL Workbench下載界面

下載完成后雙擊打開安裝一切行云流水,相信各位小伙伴都能很easy的搞定,不必多言。安裝完成后先別急著打開,再下載一個(gè)MySQL數(shù)據(jù)庫(kù)的服務(wù)器,這是下載地址MySQL服務(wù)器下載,同樣下載完成后雙擊打開安裝。

提醒:這里我提醒一下,有可能有些小伙伴會(huì)遇到如下圖的一個(gè)彈出,這個(gè)彈窗的大概意思呢是說給你分配了一個(gè)默認(rèn)的root用戶訪問localhost的密碼,這是因?yàn)槟愕碾娔X沒有root權(quán)限的原因,當(dāng)然這個(gè)密碼比較煩,所以想要去掉密碼的可以自行百度也可以參考這個(gè)官方給出的解決方案:How to Reset the Root Password,這里呢就不再贅述了。

root用戶訪問localhost初始密碼彈窗

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

系統(tǒng)偏好設(shè)置

二話不說,點(diǎn)它,點(diǎn)開之后如下圖:

MySQL服務(wù)器關(guān)閉狀態(tài)

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

MySQL服務(wù)器開啟狀態(tài)

把MySQL服務(wù)器打開之后呢就可以關(guān)閉這個(gè)窗口了(PS:如果沒有勾選上圖中的自啟動(dòng)的話每次重啟電腦之后都要手動(dòng)打開該服務(wù)哦?。?/p>

接下來配置數(shù)據(jù)庫(kù)了,首先打開MySQL Workbench,如下圖:

第一次打開MySQL Workbench

點(diǎn)擊“New Connection”來新建一個(gè)連接,此處對(duì)數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)不多說,請(qǐng)不清楚的小伙伴們自行腦補(bǔ),如下圖:

新建一個(gè)連接

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

MySQL連接正常

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

已創(chuàng)建一個(gè)新的連接

雙擊這個(gè)連接即可打開,如下圖:

新連接的空白頁(yè)面

到此為止,數(shù)據(jù)庫(kù)的配置就暫時(shí)告一段落了。路漫漫其修遠(yuǎn)兮,大家不要慌,咱們繼續(xù)。

2.終端環(huán)境配置

這里的配置主要是終端訪問MySQL數(shù)據(jù)庫(kù)的配置,一般情況下,第一次在終端使用mysql命令時(shí)會(huì)出現(xiàn)如下情況:

mysql命令不存在

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

編輯.bash_profile

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

bash_profile本來沒有末尾那句

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

執(zhí)行該命令時(shí)不會(huì)有任何反應(yīng),執(zhí)行一次就好了

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

已經(jīng)通過終端連接MySQL

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

首先在MySQL Workbench中創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),打開之前配置好的MySQL,如下圖:

創(chuàng)建數(shù)據(jù)庫(kù)

點(diǎn)擊上圖中的圖標(biāo)后如下圖:

創(chuàng)建數(shù)據(jù)庫(kù)步驟1
創(chuàng)建數(shù)據(jù)庫(kù)步驟2

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

剛創(chuàng)建的數(shù)據(jù)庫(kù)

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

終端查看數(shù)據(jù)庫(kù)

好了,到此為止,我們可以在終端訪問數(shù)據(jù)庫(kù)了,終端關(guān)于MySQL的配置也告一段落了。希望就在前方,吾將上下而求索,小伙伴們跟著我的節(jié)奏,不要停下你們的腳步。

3.加載.sql文件到本地?cái)?shù)據(jù)庫(kù)

一般我們有些常用的數(shù)據(jù)可能會(huì)保存到數(shù)據(jù)庫(kù),當(dāng)然,網(wǎng)上也可以找到很多別人分享的sql數(shù)據(jù)庫(kù)文件,那么我們從網(wǎng)上找到這些文件之后該如何查看,或者說如何轉(zhuǎn)換成我們想要的文件呢?接下來我就以跟“度娘”要來的一份各個(gè)國(guó)家手機(jī)代碼的數(shù)據(jù)庫(kù)文件為例給大家分享一下如何查看本地?cái)?shù)據(jù)庫(kù)文件和數(shù)據(jù)庫(kù)文件格式的轉(zhuǎn)換,準(zhǔn)確的說應(yīng)該是將數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)讀取出來重新寫入到我們想要的格式文件中。

下載下來的數(shù)據(jù)庫(kù)文件呢是這樣子的:

下載下來的sql文件

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

修改后的sql文件

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

使用source命令導(dǎo)入sql文件

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

sql導(dǎo)入結(jié)果

4.配置Python環(huán)境

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

正在安裝Python

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

Python安裝完成后如下圖:

Python安裝完成

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

安裝MySQL-python

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

安裝biplist

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

添加環(huán)境變量

好了,到這里為止呢整個(gè)Python環(huán)境就基本上配置完成了,不過提醒一下,最后修改完成這個(gè).bash_profile別忘了上面說的要使用“source .bash_profile”命令重新加載一下哦!再次提醒,每一次改動(dòng)該文件都要重新加載。小伙伴,保持你們的激情,不要停下你們的雙手,跟我一起,油門繼續(xù)往上踩……

5.此時(shí)不擼更待何時(shí)

接下來就是見證奇跡的時(shí)刻,那么在奇跡到來之前我們先做個(gè)鋪墊工作,就是打開Xcode創(chuàng)建一個(gè)plist文件出來,這個(gè)過程我想不用說了吧,小伙伴們自行看圖吧!

創(chuàng)建plist文件1
創(chuàng)建plist文件2

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

修改root類型

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

創(chuàng)建腳本文件

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

腳本源碼

好了,代碼都寫完了,還能有什么事呢,大功告成99%了,尼瑪,為什么99%呢??因?yàn)檫€沒看到結(jié)果嘛!

6.結(jié)果展示

辛辛苦苦按照上面的步驟一步一步似爪牙的配置下來,是騾子是馬也該拉出來遛遛了,那么好,看一下結(jié)果吧。

首先是腳本運(yùn)行結(jié)果:

腳本運(yùn)行結(jié)果

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

輸出的plist文件內(nèi)容

好了,看到這里的結(jié)果那么上面差的1%就可以加上了,100%的過程早就100%的結(jié)果,感謝大家的耐心與支持。

說明:這里呢對(duì)上面創(chuàng)建plist文件后修改root類型做一個(gè)解釋,因?yàn)槟_本中寫入的數(shù)據(jù)類型是Python中的list,其實(shí)這個(gè)list就相當(dāng)于數(shù)組Array,所以修改后寫入數(shù)據(jù)結(jié)構(gòu)更清晰,如果不作修改也是可以的,只不過文件的root是字典,有一個(gè)key是“country_codes”對(duì)應(yīng)的value類型是數(shù)組,數(shù)組里每一個(gè)item是字典這樣。有興趣的小伙伴可以自行嘗試。

感謝同行朋友@jinsxiong?參與的一起討論,以及他姐夫的數(shù)據(jù)庫(kù)相關(guān)技術(shù)指導(dǎo),謝謝。

由于寫作匆忙錯(cuò)誤在所難免,希望大家積極指正,相互交流,謝謝大家。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容