练习 44:使用 Python 的数据库 API
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 已经是一个不错简单的 AP,用于访问数据库I,所以你只需练习包装一个糟糕的 API。你的目标应该是充分学习sqlite3
API,然后设计一种更简单的方法来访问它。
有时“简单”纯粹是主观的,或是根据当前的需要。你可以决定,你需要简化的东西,不是与 SQL 数据库通信的方式,而是你与 SQL 数据库通信的方式。如果你的应用程序只需要处理人员和宠物,那么你的简化可以仅仅是,制作一个仅适用于你的 API。
深入学习
阅读 Python 中其它数据库的 API。你可以阅读 Pyscopg PostgreSQL API,以及 MySQL Python 驱动。