什么是可行的Python数据库抽象层

发布于 2021-01-29 15:13:52

我开始参与一个开源项目Gramps,该项目正在探索将其后端从BSDDB切换到关系数据库。无论是SQLite还是MySQL,我们都还没有完全决定,甚至可能会尝试以有限的能力同时做这两种事情。我是专业的开发人员,但我是python的新手,所以我对当前的工具/库选择并不熟悉。我的任务是研究数据库抽象层。当前有一个维基讨论正在进行比较。对象关系映射器可能不错,但并非绝对必要。尽管我知道这通常是数据库抽象层的同义词。如果包含ORM,则必须进行广告查询,而无需花费太多精力。

现在,列表包括:

CouchDB 我还没有研究过。

DB-API 似乎是标准的python
api,每个数据库都会创建一个使用它的自己的模块。甚至BSDDB似乎都写过一个,但是我还没有完全探索它。模块可以互换吗?

SQLAlchemy 这似乎是当前最受欢迎的?但是我对python世界的了解非常有限。

我还没有研究过SQLObject

那么人们对于python数据库抽象层的看法和建议是什么?

关注者
0
被浏览
61
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    仔细研究SQLAlchemy。

    您可以使用SQLite进行测试和开发。

    您可以使用MySQL投入生产-基本上无需更改应用程序。

    DB-
    API尽管已被广泛遵循,但它具有足够的灵活性,以至于(1)您无法与基础RDBMS中的SQL变体隔离开来;(2)仍然存在一些难以隐藏的特定于DB驱动程序的功能。

    另一个很好的ORM层是Django的一部分。您可以(不费吹灰之力)仅使用Django
    ORM,而无需使用其余Django Web框架。

    优先于DB-API使用ORM层(SQLAlchemy或SQLObject)。

    为什么?您的模型应该是一个坚实,清晰,经过深思熟虑的OO模型。关系映射应该排在对象模型之后。SQLAlchemy使这成为一种合理的方法。

    在正常情况下,将发生“数据库抽象层”。实际上,由于使用了DB-API(如SQLAlchemy所用),您提供了两个抽象层:ORM和DB-API。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看