# 练习 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