SQLAlchemy Python數(shù)據(jù)庫實(shí)戰(zhàn) 第2版(圖靈出品)
本書主要探討SQLAlchemy,這個Python 庫在關(guān)系型數(shù)據(jù)庫和傳統(tǒng)編程之間架起了一座橋
梁,有助于Python 程序員將應(yīng)用程序連接到關(guān)系型數(shù)據(jù)庫。本書首先通過對比的方式介紹了SQLAlchemy 的兩種主要使用模式——SQLAlchemy Core 和SQLAlchemy ORM,然后探討了數(shù)據(jù)庫遷移工具Alembic 的用法,快速講解了SQLAlchemy 的應(yīng)用。
SQLAlchemy是一個流行的開源代碼庫,功能強(qiáng)大又相當(dāng)靈活,能夠幫助Python程序員使用各種關(guān)系型數(shù)據(jù)庫,許多公司甚至把SQLAlchemy看作在Python中使用關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)方式,使用SQLAlchemy已經(jīng)成為Python程序員必備的技能之一。
1.本書為O'Reilly系列叢書,眾多年來“動物書”成為廣大程序員心目中的解決問題的**指南;
2.本書通過真實(shí)示例,一步步指導(dǎo)讀者使用SQLAlchemy構(gòu)建簡單的數(shù)據(jù)庫應(yīng)用程序,以及使用相同的元數(shù)據(jù)同時連接多個數(shù)據(jù)庫,既是很棒的學(xué)習(xí)工具,也是不錯的參考手冊;
3.本書提供了SQLAlchemy Core和SQLAlchemy ORM兩種用法的對照,讀者可以根據(jù)實(shí)際情況選擇全部閱讀或者只閱讀當(dāng)前需要的部分;
4.本書提供了示例代碼和相關(guān)練習(xí)的下載鏈接,讀者可以將示例代碼直接用于自己的程序,提高工作效率;
5.讀者可以在圖靈社區(qū)中與其他讀者進(jìn)行交流,共同解決閱讀和工作中遇到的問題,結(jié)交更多的學(xué)習(xí)路上的小伙伴。
賈森·邁爾斯(Jason Myers),Built Technologies平臺工程師,曾在思科公司擔(dān)任技術(shù)主管。在轉(zhuǎn)做開發(fā)前,曾做過15年系統(tǒng)架構(gòu)師。
里克·科普蘭(Rick Copeland),Carefolio公司聯(lián)合創(chuàng)始人兼CEO,Arborian咨詢公司顧問,是位經(jīng)驗(yàn)豐富的創(chuàng)業(yè)者、技術(shù)主管、演講者、培訓(xùn)師和顧問。
前言 ix
SQLAlchemy 入門 xv
第 一部分 SQLAlchemy Core
第 1 章 模式和類型 3
1.1 類型 3
1.2 元數(shù)據(jù) 5
1.3 表 5
1.3.1 列 6
1.3.2 鍵和約束 7
1.3.3 索引 8
1.3.4 關(guān)聯(lián)關(guān)系和外鍵約束 8
1.4 表的持久化 10
第 2 章 使用SQLAlchemy Core 處理數(shù)據(jù) 12
2.1 插入數(shù)據(jù) 12
2.2 查詢數(shù)據(jù) 15
2.2.1 ResultProxy 16
2.2.2 控制查詢中的列數(shù) 18
2.2.3 排序 18
2.2.4 限制返回結(jié)果集的條數(shù) 19
2.2.5 內(nèi)置SQL 函數(shù)和標(biāo)簽 20
2.2.6 過濾 21
2.2.7 ClauseElement 22
2.2.8 運(yùn)算符 23
2.2.9 布爾運(yùn)算符 24
2.2.10 連接詞 24
2.3 更新數(shù)據(jù) 25
2.4 刪除數(shù)據(jù) 26
2.5 連接 27
2.6 別名 29
2.7 分組 29
2.8 鏈?zhǔn)秸{(diào)用 30
2.9 原始查詢 32
第3 章 異常和事務(wù) 33
3.1 異!33
3.1.1 AttributeError 34
3.1.2 IntegrityError 35
3.1.3 處理錯誤 37
3.2 事務(wù) 38
第4 章 測試 45
4.1 使用測試數(shù)據(jù)庫做測試 45
4.2 使用mock 51
第5 章 反射 54
5.1 反射單個表 54
5.2 反射整個數(shù)據(jù)庫 56
5.3 使用反射對象構(gòu)建查詢 57
第二部分 SQLAlchemy ORM
第6 章 使用SQLAlchemy ORM 定義模式 61
6.1 使用ORM 類定義表 61
6.2 關(guān)系 63
6.3 模式持久化 65
第7 章 使用SQLAlchemy ORM 處理數(shù)據(jù) 66
7.1 會話 66
7.2 插入數(shù)據(jù) 68
7.3 查詢數(shù)據(jù) 71
7.3.1 控制查詢中的列數(shù) 74
7.3.2 排序 74
7.3.3 限制返回結(jié)果集的條數(shù) 75
7.3.4 內(nèi)置SQL 函數(shù)和標(biāo)簽 75
7.3.5 過濾 77
7.3.6 運(yùn)算符 78
7.3.7 布爾運(yùn)算符 79
7.3.8 連接詞 79
7.4 更新數(shù)據(jù) 80
7.5 刪除數(shù)據(jù) 81
7.6 連接 83
7.7 分組 85
7.8 鏈?zhǔn)秸{(diào)用 85
7.9 原始查詢 87
第8 章 理解會話和異!88
8.1 SQLAlchemy 會話 90
8.2 異常 92
8.2.1 MultipleResultsFound 異!93
8.2.2 DetachedInstanceError 94
8.3 事務(wù) 96
第9 章 使用SQLAlchemy ORM 測試 103
9.1 使用測試數(shù)據(jù)庫做測試 103
9.2 使用mock 111
第 10 章 使用SQLAlchemy ORM 和自動映射進(jìn)行反射 113
10.1 使用自動映射反射數(shù)據(jù)庫 113
10.2 反射關(guān)系 115
第三部分 Alembic
第 11 章 Alembic 入門 119
11.1 創(chuàng)建遷移環(huán)境 119
11.2 配置遷移環(huán)境 120
第 12 章 創(chuàng)建遷移 122
12.1 創(chuàng)建基礎(chǔ)空遷移 122
12.2 自動生成遷移 124
12.3 手動創(chuàng)建遷移 127
第 13 章 控制Alembic 129
13.1 確定數(shù)據(jù)庫的遷移級別 129
13.2 遷移降級 130
13.3 標(biāo)記數(shù)據(jù)庫遷移級別 131
13.4 生成SQL 131
第 14 章 SQLAlchemy 的高級應(yīng)用 133
14.1 混合屬性 133
14.2 關(guān)聯(lián)代理 136
14.3 集成SQLAlchemy 和Flask 141
14.4 SQLAcodegen 143
第 15 章 接下來做什么 149
關(guān)于作者 150
關(guān)于封面 150