你離學會操作SQL資料庫|還剩最後2招
這是菜鳥學Python的第96篇原創文章
閱讀本文大概需要3分鐘
前面講SQL資料庫我已經寫了3篇,我是用關係資料庫家族裡面最簡單的sqlite3作為起航,來慢慢的講SQL資料庫的使用,一層一層的由淺入深的講解,但是似乎還缺什麼,對的就是資料庫裡面有多對多的關係,也就是多表查詢和還有動態變數的插入。好今天就集合Pandas庫,一起把這2招教給你。
要點:
- 動態變數插入
- 多表聯合查詢
1.創建資料庫
既然我們有3個表格,那麼先創建一個資料庫名字叫mul_table.db,然後新建3個table(具體每個表的數據變數類型這裡就不細講,參考前面的學會最簡單的資料庫|看完這7招就夠了)
2.用Pandas存儲表數據
上面3個表的數據,我們就用Pandas來存儲一下.Pandas的知識小夥伴還記得嘛,前面講了很多篇哦,若不記得了,自己去歷史文章裡面回顧一下。
我們把學生,成績單和關係數據,用Pandas DataFrame存一下:
3.把Pandas數據動態插入資料庫
前面幾篇資料庫的文章,裡面的變數都是靜態的,若動態的如果插入資料庫呢,
假如我們上面的動態的數據是從文件裡面讀出來,或者從網上爬來的,或者CVS裡面讀的,如何寫入資料庫呢
很簡單,在execute裡面我們用VALUES的時候用?來代替動態變數,然後後面用一個元組參數去替換這個? .(是不是有點類似字元串格式化)
conn.execute("INSERT INTO Students (name,email) VALUES (?,?)",
(xx,xx@sohu.com));
4.多表查詢
先看一下3個表格之間的一對多的關係
學生表-------關係表
課程表-------關係表
再看一下多對多的關係
- 一個學生可以選修多個課程,而一個課程也可以多個學生選擇
- 對於這樣的多表查詢,SQL裡面有一個關鍵字叫JOIN ,SQLite 的 Joins 子句用於結合兩個或多個資料庫中表的記錄.
- JOIN 是一種通過共同值來結合兩個表中欄位的手段
- 找到共同值:
學生表---關係表:student_id
課程表---關係表:course_id
那我們就來聯合幾個表查一下:學生的名字,選修的課程和成績,並且按照成績分數從高到低排序:
>>
(ulily, uPython, 95)
(uJack, uPython, 90)
(uJames, uPython, 80)
(uJames, uGo, 72)
(uJack, uJava, 70)
(uJames, uJava, 60)
(ulily, uGo, 50)
結論:
好,SQL資料庫的多表查詢和動態插入,就講到這裡了.大家若有什麼問題,歡迎留言討論.後台有同學非常急迫的想學MySQL,其實MySQL和sqlite3大同小異,語法上非常接近,只是功能,性能上強大一些而已。不用太著急,兩大資料庫MySQL和Mongodb我都會講的,只是我寫文章喜歡循序漸進的寫,敬請期待吧
歡迎大家關注 菜鳥學Python",更多好玩有趣的Python原創教程,趣味演算法,經驗技巧,行業動態,盡在菜鳥學Python,一起來學python吧
歷史人氣文章
Python語言如何入門
Python寫個迷你聊天機器人|生成器的高級用法
同學,學Python真的不能這樣學
全網爬取6500多隻基金|看看哪家基金最強
用Python破解微軟面試題|24點遊戲
一道Google的演算法題 |Python巧妙破解
推薦閱讀:
※Python 家族有多龐大
※Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
TAG:Python |