有没有提供SQL和NoSQL数据库抽象层的Python Web应用框架?

2 投票
5 回答
1762 浏览
提问于 2025-04-16 03:30

有没有可能创建一个抽象层,能够同时支持关系型数据库和非关系型数据库呢?这个抽象层的目的是为了减少重复的工作,让一个网页应用只需在一个地方(也就是这个抽象层)修改代码,就可以使用任何类型的数据库。位于抽象层之上的部分,不需要担心底层的数据库是关系型的(像SQL)还是非关系型的(像NoSQL),或者将来可能出现的其他新型数据库。

5 个回答

2

你可以把普通的Django和Django-nonrel(http://www.allbuttonspressed.com/projects/django-nonrel)一起使用,这样可以获得比较统一的体验。不过有一些限制,建议你仔细阅读文档,记住Spolsky说的“所有的抽象都有漏洞”。

2

现在有一个暑期编程项目,正在进行中,目的是为Django的ORM(对象关系映射)添加对非关系型数据库的支持。这个项目进展顺利,很有可能会在Django 1.3发布之前合并到核心功能中。

0

感谢大家的回答。总结一下,目前只有web2py和Django这两个框架支持这种抽象方式。

这并不是在讨论SQL和NoSQL哪个更好,而是说使用抽象可以让应用程序更灵活。假设你一开始用NoSQL来做项目,后来又想换成SQL。如果能只在几个地方改代码,而不是到处都改,那就太好了。在某些情况下,数据存储在关系型数据库还是非关系型数据库其实并没有太大区别。比如,存储用户资料、动态页面的文本内容,或者博客文章。

我知道使用抽象会有一些权衡,但我想问的是现有的解决方案或技术见解,而不是后果。

撰写回答