【问题标题】:Coming to python from perl, i'm wondering if there's something like DBI for python?从 perl 来到 python,我想知道是否有类似 DBI for python 的东西?
【发布时间】:2014-05-08 22:21:37
【问题描述】:

在 perl 中,DBI 模块是与 DB 交互的标准方式,每个 DB 供应商都提供自己的 DBD 模块,供 DBI 使用。 (它有点类似于 JDBC。)我不知道在 python 中是否存在类似的模型。对于 Postgres,我看到有 pg 和 pgdb 模块,其中 pgdb 遵循 DB-API 2.0 而 pg 没有。我应该关心这个吗?如果我使用 pgdb,我是否应该期望来自 MySQL db 模块的相同接口,它遵循 DB-API 2.0?

谢谢!

【问题讨论】:

  • 是的,DB-API 2.0 绝对是低级数据库访问的方式,实现它的模块确实应该实现相同的接口。对于抽象更高级别抽象 API 的 API,请查看 SQLAlchemy。它还提供 ORM 功能,但它的 core 可用于编写与任何特定 RDBMS 无关的代码。
  • 另请参阅database URLs 上的 SQLAlchemy 文档,尤其是 PostgreSQL 上的注释。

标签: python mysql database postgresql


【解决方案1】:

在 Python 中与 DB API 2.0 兼容的 Postgres 交互的流行模块是psycopg2 (http://initd.org/psycopg/docs/index.html)。

这是我在 Python 代码中与 Postgres 交互时经常使用的那个。我发现它使用起来很简单,并且它提供了一些相当容易添加的不错的附加功能,例如基于字典的游标(即DictCursor,其中行位于以列名作为键的字典中,而不是数组)。

还有named cursors,您只需提供一个带有名称的游标,psycopg2 将自动为您创建一个默认块大小为 2000 的服务器端游标,您可以将其迭代为任何其他 Python 对象,随后的提取在后台透明地进行。

【讨论】:

  • 谢谢,我也去看看。
【解决方案2】:

是的,Python DBAPI 2.0 是 Python 中与数据库交互的标准 API。但请注意,DBAPI 是一个非常简单的低级接口,它本身并不容易在不同数据库以不同方式实现 SQL 时编写可跨不同数据库移植的数据库查询。

对于帮助您编写可移植数据库应用程序的更高级别的接口,您可以查看 SQLAlchemy。 SQLalchemy 核心和 ORM 都提供了一种以可移植方式查询数据库的语言。

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    相关资源
    最近更新 更多