零基礎Python數(shù)據(jù)庫怎么學?大牛帶你揚帆起航
前面寫了幾篇關于數(shù)據(jù)分析的文章,用爬蟲爬取了全網6500多只基金的作數(shù)據(jù)分析,算是數(shù)據(jù)分析篇開了個頭。當時留下了幾個問題,其中一個問題就是我們的數(shù)據(jù)存儲用的是文件,其實正宗的做法就是用數(shù)據(jù)庫存儲。因為做數(shù)據(jù)分析特別是當你的數(shù)據(jù)量非常大時候或者后端開發(fā)的時候,肯定是要用數(shù)據(jù)庫的,所以學好數(shù)據(jù)庫非常有必要。好接下來幾篇,我將給大家介紹一下Python在數(shù)據(jù)庫里面的使用,小伙伴們,我們快開始吧~~
要點:
- 數(shù)據(jù)庫的分類
- Python如何操作數(shù)據(jù)庫
- 數(shù)據(jù)庫環(huán)境的搭建
- 數(shù)據(jù)庫可視化的工具
- 實例寫一個小的數(shù)據(jù)庫
1.數(shù)據(jù)庫的分類
關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫
1).什么是關系數(shù)據(jù)庫
關系型數(shù)據(jù)庫,是指采用了關系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,簡單來說,關系模型指的就是二維表格模型,而一個關系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。象銀行系統(tǒng)會大量的用關系數(shù)據(jù)庫.比如大家經常用的MySQL就是典型的關系數(shù)據(jù)庫.
優(yōu)點:
容易理解:二維表結構是非常貼近邏輯世界的一個概念,關系模型相對網狀、層次等其他模型來說更容易理解
使用方便:通用的SQL語言使得操作關系型數(shù)據(jù)庫非常方便
易于維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率
2).什么是非關系數(shù)據(jù)庫
關系數(shù)據(jù)庫雖然很好,但是隨著互聯(lián)網大規(guī)模的爆發(fā),弱點也越來越明顯,比如事務的一致性,多表聯(lián)查,高并發(fā)等等瓶頸很明顯。
于是NoSQL一詞橫空出世,以鍵值對存儲,且結構不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結構,可以減少一些時間和空間的開銷。比如MongoDb就是典型的NoSQL型數(shù)據(jù)庫(鍵值對大家想到了什么,對json格式).
寫到這里讓我想起了當年的IP和ATM技術之爭,其實沒有那個技術能稱王稱霸數(shù)年,獨領風騷只是一時而已,順勢而為才是王道.技術沒有***,只有最適合時代而已.
2.Python如何操作數(shù)據(jù)庫
市面上現(xiàn)在主流的數(shù)據(jù)庫有Oracle,MySQL,Mongodb,Redis,SQLite,SQL Server等等,有同學會問這么多數(shù)據(jù)庫,我的代碼怎么移植啊,放心Python有一個標準數(shù)據(jù)庫接口為DB-API,Python DB-API為開發(fā)人員提供了數(shù)據(jù)庫應用編程接口,也就是說使用它連接各數(shù)據(jù)庫后,就可以用相同的方式操作各數(shù)據(jù)庫。
Python DB-API使用流程也非常簡單:
a).引入 API 模塊
b).獲取與數(shù)據(jù)庫的連接
c).執(zhí)行相關的語句進行查詢,搜索和存儲過程
d).關閉數(shù)據(jù)庫連接
寫到這里,我突然想起來一個故事(把大象放進冰箱),三步搞定,哈哈
3.數(shù)據(jù)庫環(huán)境的搭建,SQLite起步
明白了上面的道理之后,小伙伴肯定會迫不及待的動手操練起來,馬上就要開啟數(shù)據(jù)庫之旅,我們還是選擇從簡單的開始,先從SQLite開始學習使用,為啥要選SQLite呢,數(shù)據(jù)庫的學習看似復雜,其實就是一層紙,越過這個障礙,再學其他的數(shù)據(jù)庫都非常容易的.
SQLite是一個非常簡單,免費,快速而強大的小型數(shù)據(jù)庫(麻雀雖小五臟俱全),不需要復雜的安裝和管理,輕輕松松使用,非常適合小白入門.而且在linux和Mac上都自帶SQLite3,是不是很爽啊.
(win的同學肯定不樂意了,其實win下安裝非常簡便,大家可以百度一下,最多3分鐘搞定)
我們來看一下SQLite3長啥樣吧,打開Mac終端敲sqlite3:
4.數(shù)據(jù)庫可視化工具
有的時候需要用可視化的工具來查看我們的數(shù)據(jù)庫,特別是數(shù)據(jù)表格很大的時候,能查看SQLite的數(shù)據(jù)庫文件工具很多,我這里推薦使用DB Browser for SQLite,可以非常直觀的去處理SQLite 文件.
大家可以去sqlitebrowser的官網下載,有win,linux,mac版本,mac版本大概13M,選擇一下下載即可.
5.創(chuàng)建一個數(shù)據(jù)庫
我們先來創(chuàng)建一個數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫的方法有很多種,我們可以用sqlite3命令行創(chuàng)建,也可以用Python代碼去寫一個新的數(shù)據(jù)庫,也可以用DB Browser for SQlite圖形可視化創(chuàng)建,對于零基礎的小白,我們先用最簡單的圖形界面創(chuàng)建吧.
1).打開DB Browser
step1:點擊新建數(shù)據(jù)庫
step2:取一個名字,比如Students
step3:點擊save
2).建表
一個數(shù)據(jù)庫可以用很多表,我們新建一個叫demo的表,里面的列分別是
id:INTEGER(相當于int型)
name:TEXT(相當于string型)
sex:TEXT(相當于string型)
age:INTEGER(相當于int型)
關于SQLite里面的語法,下一篇會細細講,這里大家有一個大體的認識就可以了.
3).編輯表的內容
step1:點擊Brower data
step2:點擊新建記錄
step3:增加每一行的內容
然后保存退出,就會在上面***步保存的地方(Desktop),出現(xiàn)了一個Students.db
6.命令行查詢數(shù)據(jù)庫內容
剛才我們新建了一個Students.db文件,里面其實是一個3*4的二維表格,大家是不是想用sqlite方式看一下呢,好,我們下面打開一個終端,然后用sqlite3 Students.db打開看一下
敲.tables
會出現(xiàn)一個demo表格
敲select * from demo;
會出現(xiàn)demo表格里面的內容
注意:
sql語句一定以;結尾
是不是和我們用圖形界面創(chuàng)建的表的內容,一模一樣啊.有同學問,SQLite里面的數(shù)據(jù)格式是一個二維表,我們的NumPy,Pandas不是專門修理二維表的嗎,比如CSV,Excel文件,哇這位同學你太有才了,是的,數(shù)據(jù)分析很重要的一個過程就是,把數(shù)據(jù)清洗成表結構,存入數(shù)據(jù)庫,其實CSV文件是可以直接秒變SQL db文件的.
7.SQLite-Python|主角登場
經過前面6個主題的鋪墊,拋磚引玉了這么久,我們的Python主角也該上場了.我們最最重要的目的就是用Python來讀寫數(shù)據(jù)庫,今天我們先來讀一下.
1).Pip 安裝SQLite3模塊
有很多種方法可以安裝,簡單的用pip install sqlite3或者pycharm里面安裝一下
2).讀取數(shù)據(jù)庫demo表格
a).sqlite3.connect打開數(shù)據(jù)庫文件
b).獲得游標cursor
c).執(zhí)行一個SQL語句,這里是查詢全表
d).打印每一行的數(shù)據(jù)
e).不要忘記關閉游標和數(shù)據(jù)庫
結論:
好了,Python數(shù)據(jù)庫入門篇就先講到這里了,是不是很簡單,今天很多內容沒有展開講,為的就是讓小白用戶能通俗的進入數(shù)據(jù)庫的殿堂,后面會由淺入深的慢慢一層一層講。
數(shù)據(jù)庫其實沒有想象的那么神秘,那么難的。大家動手搭建個環(huán)境就可以入手了,而且可視化工具雖然很方便,當然還是建議大家從命令行入手,這樣對你系統(tǒng)的了解數(shù)據(jù)庫的操作很有幫助。
數(shù)據(jù)分析之數(shù)據(jù)庫篇我的項目主要用的是MySQL和Mongodb,這兩者各有千秋,都是我的***,應用的場景稍微不一樣,我們后面會講到的。