首页 > 解决方案 > Python中各种数据库的单一API

问题描述

我在使用 Perl DBI 模块方面拥有良好的经验。DBI 模块充当多个数据库(如 Oracle、Postgres 等)的单一 API。

我最近开始研究 Python,我注意到 Python 中的每个数据库都有单独的 API。

以下是我的问题: 1. Python 中没有单一的 DB API吗?2.如果不是,这不是Python的缺点吗?

标签: pythondatabaseapiperl

解决方案


没有与 Perl 的以 DBI 为中心的生态系统等效的 Python。反而:

  • DBAPI (PEP 249) 定义了期望关系数据库驱动程序提供的通用低级接口。
  • 一些项目,如 SQLAlchemy Core,使用通用 DBAPI 接口对多个驱动程序进行抽象。

由于不同的模块系统,Python 缺乏适当的 DBI 等价物的缺点不如 Perl 中的缺点。假设您将自己限制在一个常见的 SQL 子集和 DBAPI 上,而不是使用特定于驱动程序的扩展,那么切换到不同的驱动程序就像更改导入和更新连接信息一样简单:

- import somedatabase as db
+ import differentdriver as db

在实践中,Python 的 DBAPI 和 Perl 的 DBI 都不能让您随心所欲地切换数据库。然而,Perl 的 DBI 使得编写与多个数据库一起工作的软件变得更加容易。


推荐阅读