我正在构建一个我想发布的应用程序,我将用 Python 编写该应用程序。 我不想将任何特定数据库 sql/nosql 的使用锁定到我的应用程序。 我如何设计应用程序或模型层以不强制执行 SQL/NOSQL 方式来存储数据。
有没有同时支持这两种存储的 ORM?我没有找到一个。 通常我会使用 sqlalchemy 来确保人们可以根据需要使用 MySQL/PostgreSQL/MSSQL/等,但是将 NOSQL 添加到图片中似乎比我最初想象的要复杂。
我有一些要求,例如:
- 我不想强制执行任何存储后端,这是为了确保它不会吓到人们使用该应用程序。
- 它必须支持数据架构迁移(在安装或升级过程中)
如果您知道我如何构建这些要求,我将不胜感激。 是否可以创建这样的结构:
+-----+
+ app +
+-----+
|
+-------------+
+ Data Access +
+-------------+
|
+-----------+
+ SQL/NOSQL +
+-----------+
谢谢
最佳答案
不,没有那样的东西。
ORM 或 RDBMS 可以依赖 SQL 作为抽象底层数据库的最低标准。大多数 ORM 都构建在 Python DB API 之上(所有 RDBMS Python 绑定(bind)或多或少地实现了它)。
对于 NoSQL,既没有标准的查询语言也没有标准的驱动程序 API。
所以没有什么比这对两个世界都适用的了。
有一些方法可以为 NoSQL 语言定义通用查询语言。
例如有JsonIQ
但在现实中对你帮助不大。
关于Python 是否有用于 SQL 和 NoSQL 的 ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231691/