# 練習 44:使用 Python 的數據庫 API
> 原文:[Exercise 44: Using Python's Database API](https://learncodethehardway.org/more-python-book/ex44.html)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
Python 具有標準化的數據庫 API,可以使用相同的代碼訪問多個數據庫。你要連接的每個數據庫都有一個不同的模塊,它們知道如何與該數據庫通信,并遵循 <https://www.python.org/dev/peps/pep-0249/PEP> 中的標準。這使得我們更容易使用所有數據庫來訪問它們,它們具有不同 API。對于本練習,你將使用 <https://docs.python.org/2/library/sqlite3.html> 上的`sqlite3`模塊來處理 SQL。
## 學習 API
作為程序員,你必須不斷做到的一件事是,學習其他人寫的 API。我沒有具體涵蓋最有效的方式來做到它,因為大多數程序員得心應手,就像學習語言那樣。Python 語言及其模塊密切相關,當你學習 Python 時,你不得不學習這些模塊中的 API。然而,有一種有效的方式來學習我使用的 API,在這個練習中你將要學習它。
為了學習像`sqlite3`模塊的API,我會這樣做:
+ 查找 API 的所有文檔,如果沒有文檔,請查找代碼。
+ 檢查樣例或測試代碼,并將其復制到我自己的文件中。通常閱讀是不夠的。我實際上會使其工作,猜猜為什么,因為很多時候文檔不匹配當前版本的 API。制作文檔中的所有東西,可以幫助我找到所有忘記提到的內容。
+ 當你獲取樣例代碼,來工作于我的機器時,記錄下任何對我有用(WFM)的情況。WFM 是,編寫文檔的人留下了重要的配置步驟,因為他們的計算機已經配置好了。大多數編寫文檔的程序員并不是從一臺新機器開始,所以他們遺漏了一些庫和軟件,它們安裝了但是別人沒有。當你嘗試在生產環境中配置 API 時,這些 WFM 的差異之后會阻礙你,所以我會記下來便于以后使用。
+ 為所有主要 API 入口點,以及它們所做的東西制作閃存卡或筆記。
+ 嘗試寫一個小型的峰值測試,使用 API?? 但只使用你的筆記。如果你點擊了你不記得的 API 的一部分,請返回到文檔并更新你的筆記。
+ 最后,如果 API 很難使用,我會考慮使用一個簡單的 API 來“包裝”它,它只做我需要的東西,所以我可以忘記它。
如果這樣不能學到 API,那么你應該考慮找一個不同的 API 來使用。如果 API 的作者告訴你“閱讀代碼”,則可能有另一個具有文檔的項目。去使用該項目吧。如果你必須使用這個 API,那么考慮根據自己的代碼來記錄你的筆記,然后寫一本書來賣,從作者的懶惰中賺錢。
## 挑戰練習
你將以這種方式學習`sqlite3` API,然后嘗試編寫自己的數據庫簡化 API。請記住,[DB API 2.0](https://docs.python.org/2/library/sqlite3.html) 已經是一個不錯簡單的 AP,用于訪問數據庫I,所以你只需練習包裝一個糟糕的 API。你的目標應該是充分學習`sqlite3` API,然后設計一種更簡單的方法來訪問它。
有時“簡單”純粹是主觀的,或是根據當前的需要。你可以決定,你需要簡化的東西,不是與 SQL 數據庫通信的方式,而是你與 SQL 數據庫通信的方式。如果你的應用程序只需要處理人員和寵物,那么你的簡化可以僅僅是,制作一個僅適用于你的 API。
## 深入學習
閱讀 Python 中其它數據庫的 API。你可以閱讀 [Pyscopg PostgreSQL API](http://initd.org/psycopg/docs/),以及 [MySQL Python 驅動](https://dev.mysql.com/doc/connector-python/en/)。
- 笨辦法學 Python · 續 中文版
- 引言
- 第一部分:預備知識
- 練習 0:起步
- 練習 1:流程
- 練習 2:創造力
- 練習 3:質量
- 第二部分:簡單的黑魔法
- 練習 4:處理命令行參數
- 練習 5:cat
- 練習 6:find
- 練習 7:grep
- 練習 8:cut
- 練習 9:sed
- 練習 10:sort
- 練習 11:uniq
- 練習 12:復習
- 第三部分:數據結構
- 練習 13:單鏈表
- 練習 14:雙鏈表
- 練習 15:棧和隊列
- 練習 16:冒泡、快速和歸并排序
- 練習 17:字典
- 練習 18:性能測量
- 練習 19:改善性能
- 練習 20:二叉搜索樹
- 練習 21:二分搜索
- 練習 22:后綴數組
- 練習 23:三叉搜索樹
- 練習 24:URL 快速路由
- 第四部分:進階項目
- 練習 25:xargs
- 練習 26:hexdump
- 練習 27:tr
- 練習 28:sh
- 練習 29:diff和patch
- 第五部分:文本解析
- 練習 30:有限狀態機
- 練習 31:正則表達式
- 練習 32:掃描器
- 練習 33:解析器
- 練習 34:分析器
- 練習 35:解釋器
- 練習 36:簡單的計算器
- 練習 37:小型 BASIC
- 第六部分:SQL 和對象關系映射
- 練習 38:SQL 簡介
- 練習 39:SQL 創建
- 練習 40:SQL 讀取
- 練習 41:SQL 更新
- 練習 42:SQL 刪除
- 練習 43:SQL 管理
- 練習 44:使用 Python 的數據庫 API
- 練習 45:創建 ORM
- 第七部分:大作業
- 練習 46:blog
- 練習 47:bc
- 練習 48:ed
- 練習 49:sed
- 練習 50:vi
- 練習 51:lessweb
- 練習 52:moreweb