Skip to main content
 首页 » 编程设计

python之对象的完全抽象数据源

2025年05月04日9Terrylee

如果这个问题太笼统,或者存在我尚未通过搜索找到的解决方案,我提前道歉。

我正在使用 web.py 在一个简单的 REST 服务器上工作,我的后端是 mysql,所以我使用了 sqlalchemy 声明性对象。一切都运行得非常好,但我发现自己非常依赖于使用 sqlalchemy 当时支持的数据库。如果我想切换到 mongodb 或其他东西,我的特定于 sqlalchemy 的声明类将不得不重写或废弃。

我想知道是否有任何项目(或更一般地说,设计模式的示例)允许您插入任何后端。我确信能够从 sql 后端切换到 mongo 后端(例如)需要大量的编码,但是如果有任何众所周知的策略来最小化痛苦,我会非常好奇听说他们。

非常感谢您的回答!

请您参考如下方法:

这可能会帮助您为 MongoDB 选择 ORM:

MongoDB ORM for Python?

我发现很难相信在 ORM 的引擎盖下从关系数据库到 NoSQL 数据库的任何转换都能无缝地用于任何重要的项目。但是,如果您确实需要在某个时候迁移,则有一些 ORM 具有与 SQLAlchemy 相似的语义(Ming 看起来很有前途,但我从未使用过它)。

您可能想看一下 StackOverflow architecture described on High Scalability .简而言之,SQL 数据库可以让您走得更远。

另请查看 The Case Against ORM Frameworks In High Scalability Architectures并考虑在需要横向扩展时是否要使用 ORM。

也可以同时使用两者:在需要事务的地方使用 SQL 数据库,在日志记录、事件和 NoSQL 数据库擅长的其他领域使用 NoSQL 数据库。