SQLite是一个数据库引擎,可以简化关系数据的存储和使用。与csv格式非常相似,SQLite将数据存储在单个文件中,可以轻松地与其他人共享。大多数编程语言和环境都支持使用SQLite数据库。Python也不例外,sqlite3自版本以来,Python已包含一个用于访问SQLite数据库的库2.5。
在如何使用Python和Pandas处理SQLite数据库中,我们将逐步介绍如何使用它sqlite3来创建,查询和更新数据库。我们还将介绍如何使用pandas包简化使用SQLite数据库的工作。我们将使用Python 3.5,但是同样的方法应该适用于Python 2。
如果您想学习SQL的基础知识,则可能想先阅读我们的SQL基础知识文章。
在开始之前,让我们快速看一下将要使用的数据。我们将查看航空公司的航班数据,其中包含有关航空公司,机场以及机场之间路线的信息。每条路线代表航空公司在源机场和目的地机场之间飞行的重复航班。
所有的数据是在一个名为SQLite数据库flights.db,其中包含三个表- airports,airlines和routes。您可以在此处下载数据。
这是airlines表格中的两行:
如上所示,每一行是不同的航空公司,每一列都是该航空公司的属性,例如name和country。每个航空公司都有一个独特的id,因此我们可以在需要时轻松查找它。
这是airports表格中的两行:
如您所见,每一行都对应一个机场,并包含有关机场位置的信息。每个机场都有一个独特的id,因此我们可以轻松查找它。
这是routes表格中的两行:
每个路由包含airline_id,其中id该飞行路线,以及航空公司source_id,这是机场的ID,该航线从起源,和dest_id,这是飞行的目的地机场的标识。
现在我们知道我们正在使用哪种数据,让我们从连接到数据库并运行查询开始。
在Python中查询数据库行
为了使用来自Python的SQLite数据库,我们首先必须连接到它。我们可以使用connect函数来做到这一点,该函数返回一个Connection对象:
一旦有了Connection对象,就可以创建一个Cursor对象。游标使我们能够对数据库执行SQL查询:
一旦有了Cursor对象,就可以使用它以适当命名的execute方法对数据库执行查询。下面的代码将从表中获取第一5行airlines:
您可能已经注意到,我们没有将上述查询的结果分配给变量。这是因为我们需要运行另一个命令来实际获取结果。我们可以使用fetchall方法来获取查询的