練習 44:使用 Python 的數(shù)據(jù)庫 API
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
Python 具有標準化的數(shù)據(jù)庫 API,可以使用相同的代碼訪問多個數(shù)據(jù)庫。您要連接的每個數(shù)據(jù)庫都有一個不同的模塊,它們知道如何與該數(shù)據(jù)庫通信,并遵循 https://www.python.org/dev/peps/pep-0249/PEP 中的標準。這使得我們更容易使用所有數(shù)據(jù)庫來訪問它們,它們具有不同 API。對于本練習,您將使用 https://docs.python.org/2/library/sqlite3.html 上的sqlite3
模塊來處理 SQL。
學習 API
作為程序員,您必須不斷做到的一件事是,學習其他人寫的 API。我沒有具體涵蓋最有效的方式來做到它,因為大多數(shù)程序員得心應手,就像學習語言那樣。Python 語言及其模塊密切相關,當您學習 Python 時,您不得不學習這些模塊中的 API。然而,有一種有效的方式來學習我使用的 API,在這個練習中你將要學習它。
為了學習像sqlite3
模塊的API,我會這樣做:
- 查找 API 的所有文檔,如果沒有文檔,請查找代碼。
- 檢查樣例或測試代碼,并將其復制到我自己的文件中。通常閱讀是不夠的。我實際上會使其工作,猜猜為什么,因為很多時候文檔不匹配當前版本的 API。制作文檔中的所有東西,可以幫助我找到所有忘記提到的內容。
- 當你獲取樣例代碼,來工作于我的機器時,記錄下任何對我有用(WFM)的情況。WFM 是,編寫文檔的人留下了重要的配置步驟,因為他們的計算機已經配置好了。大多數(shù)編寫文檔的程序員并不是從一臺新機器開始,所以他們遺漏了一些庫和軟件,它們安裝了但是別人沒有。當您嘗試在生產環(huán)境中配置 API 時,這些 WFM 的差異之后會阻礙你,所以我會記下來便于以后使用。
- 為所有主要 API 入口點,以及它們所做的東西制作閃存卡或筆記。
- 嘗試寫一個小型的峰值測試,使用 API?? 但只使用你的筆記。如果您點擊了您不記得的 API 的一部分,請返回到文檔并更新您的筆記。
- 最后,如果 API 很難使用,我會考慮使用一個簡單的 API 來“包裝”它,它只做我需要的東西,所以我可以忘記它。
如果這樣不能學到 API,那么你應該考慮找一個不同的 API 來使用。如果 API 的作者告訴您“閱讀代碼”,則可能有另一個具有文檔的項目。去使用該項目吧。如果你必須使用這個 API,那么考慮根據(jù)自己的代碼來記錄你的筆記,然后寫一本書來賣,從作者的懶惰中賺錢。
挑戰(zhàn)練習
您將以這種方式學習sqlite3
API,然后嘗試編寫自己的數(shù)據(jù)庫簡化 API。請記住,DB API 2.0 已經是一個不錯簡單的 AP,用于訪問數(shù)據(jù)庫I,所以你只需練習包裝一個糟糕的 API。您的目標應該是充分學習sqlite3
API,然后設計一種更簡單的方法來訪問它。
有時“簡單”純粹是主觀的,或是根據(jù)當前的需要。你可以決定,你需要簡化的東西,不是與 SQL 數(shù)據(jù)庫通信的方式,而是你與 SQL 數(shù)據(jù)庫通信的方式。如果您的應用程序只需要處理人員和寵物,那么您的簡化可以僅僅是,制作一個僅適用于您的 API。
深入學習
閱讀 Python 中其它數(shù)據(jù)庫的 API。你可以閱讀 Pyscopg PostgreSQL API,以及 MySQL Python 驅動。