笨辦法學(xué) Python · 續(xù) 第六部分:SQL 和對象關(guān)系映射

第六部分:SQL 和對象關(guān)系映射

原文:Part VI: SQL and Object Relational Mapping

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

在本書的這一部分中漫玄,我們將介紹一些內(nèi)容遗淳,它們與本書其余部分的結(jié)構(gòu)不相符,但對于初級開發(fā)人員來說救斑,這是非常必要的主題。了解如何在 SQL 數(shù)據(jù)庫中構(gòu)造數(shù)據(jù),會教給你如何在邏輯上思考數(shù)據(jù)存儲需求。有一個建立已久的方法來解構(gòu)數(shù)據(jù)旬蟋,有效存儲數(shù)據(jù)和訪問數(shù)據(jù)。近年來 NoSQL 數(shù)據(jù)庫的發(fā)展使其不同革娄,但關(guān)系數(shù)據(jù)庫設(shè)計背后的基本概念仍然有用倾贰。在你需要存儲數(shù)據(jù)的每個地方,都需要良好地構(gòu)造并理解數(shù)據(jù)拦惋。

大多數(shù)這些練習(xí)會讓你涉及使用 SQL 數(shù)據(jù)庫匆浙,因此,我建議你從 SQLite3 下載頁面下載sqlite3二進(jìn)制文件厕妖,如果你還沒有安裝的話首尼。我們使用 Python,所以它已經(jīng)安裝在大多數(shù) Python 發(fā)行版中,但有時它不可用软能。如果你不能在你的 python shell 中運行這個 Python 代碼:

>>> import sqlite3

你的 Python 就沒有默認(rèn)帶有sqlite3迎捺。你需要弄清楚為什么會丟失,并且很可能有另外一個包查排,你需要先安裝它才能在 Python 中使用凳枝。

理解 SQL 就是理解表

當(dāng)你開始這部分的練習(xí)之前,你需要完整理解一個概念雹嗦,它為許多 SQL 初學(xué)者造成了問題。

SQL 數(shù)據(jù)庫中的每個單獨的東西都是一張表合是。

把它刻錄到你的大腦里了罪。對于“表”,我是說就像一個電子表格聪全,其中左邊有行泊藕,頂部有列。通常难礼,你將使用進(jìn)入該列的某種數(shù)據(jù)來命名列娃圆。那么每一行代表你需要放入表的一件事情。這可以是一個帳戶蛾茉,一個人的名單及其信息讼呢,菜譜,甚至汽車谦炬。每一行都是一輛汽車悦屏,每列是一些屬性,關(guān)于你需要跟蹤的那輛車键思。

這為大多數(shù)程序員造成了問題础爬,因為我們按照樹形結(jié)構(gòu)思考問題。一個對象其中有另一個對象吼鳞,對象里面有個列表看蚜,列表里面有個字典,字典里面有個字符串赔桌,字符串映射為數(shù)據(jù)供炎。我們將東西嵌套在里面,而且這種風(fēng)格的數(shù)據(jù)結(jié)構(gòu)不適合表疾党。對于大多數(shù)程序員來說碱茁,似乎這兩個結(jié)構(gòu)(表和樹)不能共存,但是樹和表實際上是非常相似的仿贬。你幾乎可以使用任何樹形結(jié)構(gòu)纽竣,并將其映射到幾乎任何矩陣上,但你必須了解 SQL 數(shù)據(jù)庫的另一個方面:關(guān)系。

關(guān)系使得 SQL 數(shù)據(jù)庫變得比電子表格更有用蜓氨。電子表格可以讓你創(chuàng)建一整套工作表聋袋,并在其中放置不同類型的數(shù)據(jù),但是難以將這些工作表鏈接在一起穴吹。SQL 數(shù)據(jù)庫的目的完全是幽勒,使你可以使用列或其他表將表鏈接在一起。SQL 數(shù)據(jù)庫的天賦是港令,使用一個結(jié)構(gòu)(表)來構(gòu)建幾乎任何類型的數(shù)據(jù)結(jié)構(gòu)啥容,你可以通過將它們鏈接在一起來實現(xiàn)。

我們將了解SQL數(shù)據(jù)庫中的關(guān)系顷霹,但快速回答是咪惠,如果你可以創(chuàng)建一個數(shù)據(jù)樹,那么你可以將該樹放入1個或多個表中淋淀。在本書的這個階段遥昧,我們可以簡化將一組相關(guān)的Python類轉(zhuǎn)換為SQL表的過程,如下所示:

  • 為所有類創(chuàng)建表朵纷。
  • 在子表中設(shè)置id列指向父表炭臭。
  • 在任何兩個類“之間”創(chuàng)建鏈接表,這兩個類通過列表鏈接袍辞。

它比這更復(fù)雜鞋仍,但是,當(dāng)將一組類轉(zhuǎn)換為 SQL 時搅吁,這是所做事情的要點凿试。事實上,大部分像 Django 這樣的系統(tǒng)似芝,是上述三件事情的復(fù)雜版本那婉。

你會學(xué)到什么

本節(jié)的目的不是教你如何成為一個 SQL 系統(tǒng)管理員。如果你想做這個工作党瓮,那么我建議你學(xué)習(xí)有關(guān) Unix 的一切详炬,然后去獲得一個公司的證書,這個公司提供技術(shù)認(rèn)證寞奸。請記住呛谜,這不是一個非常有趣的工作,類似于看管一個大型的貓類動物園枪萄。貓隐岛,不是小貓。

在第六部分末尾瓷翻,你將學(xué)到 SQL 在基本層面上的工作原理聚凹。這是一個 SQL 速成課割坠,以你創(chuàng)建的對象關(guān)系映射器(ORM)結(jié)束,它與 Django 相似妒牙。本節(jié)僅僅是了解 SQL 工作方式的一個突破點彼哼,目的是為你提供足夠的信息,來了解 Django 系統(tǒng)中發(fā)生的東西湘今。

如果你想在你的工作中超出這個部分敢朱,我推薦 Joe Celko 的《SQL For Smarties》,和一些時間摩瞎。Joe 的書很厚拴签,但很完整,他是 SQL 的大師旗们。閱讀這本書將使你非常能干蚓哩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蚪拦,隨后出現(xiàn)的幾起案子杖剪,更是在濱河造成了極大的恐慌冻押,老刑警劉巖驰贷,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洛巢,居然都是意外死亡括袒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門稿茉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锹锰,“玉大人,你說我怎么就攤上這事漓库∈鸦郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵渺蒿,是天一觀的道長痢士。 經(jīng)常有香客問我,道長茂装,這世上最難降的妖魔是什么怠蹂? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮少态,結(jié)果婚禮上城侧,老公的妹妹穿的比我還像新娘。我一直安慰自己彼妻,他們只是感情好嫌佑,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布豆茫。 她就那樣靜靜地躺著,像睡著了一般歧强。 火紅的嫁衣襯著肌膚如雪澜薄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天摊册,我揣著相機與錄音肤京,去河邊找鬼。 笑死茅特,一個胖子當(dāng)著我的面吹牛忘分,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播白修,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妒峦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兵睛?” 一聲冷哼從身側(cè)響起肯骇,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祖很,沒想到半個月后笛丙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡假颇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年胚鸯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笨鸡。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡姜钳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出形耗,到底是詐尸還是另有隱情哥桥,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布激涤,位于F島的核電站拟糕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昔期。R本人自食惡果不足惜已卸,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硼一。 院中可真熱鬧累澡,春花似錦、人聲如沸般贼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蕊梧,卻和暖如春霞赫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肥矢。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工端衰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甘改。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓旅东,卻偏偏與公主長得像,于是被迫代替她去往敵國和親十艾。 傳聞我的和親對象是個殘疾皇子抵代,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容