python - 仅使用 Django 的 DB 部分

标签 python django orm

有人知道 Django 有多“模块化”吗?我可以只使用 ORM 部分来获取映射到 DB 表并知道如何从这些表中读取/写入的类吗?

如果不是,您会推荐什么作为“Hibernate 的 Python 等价物”?

最佳答案

如果你喜欢 Django 的 ORM,那么“独立”使用它是非常简单的;我有 written up several techniques for using parts of Django outside of a web context ,并且您可以自由使用其中的任何一个(或自己滚动)。

上面的Shane 似乎对这一点和其他几点有点误解——例如,Django 可以 做多个不同的数据库,它只是不默认为此(您需要对使用“主”数据库以外的其他东西的模型进行自定义管理器,这不是太难,并且有一些食谱可供使用)。确实,Django 本身不做连接管理/连接池,但我个人一直为此使用外部工具(例如,pgpool,它比 ORM 内置的任何东西都更难可以)。

我建议花一些时间阅读并尝试一些可能的 Google 搜索(例如,我链接到您的帖子是“独立 Django 脚本”的最高结果),以了解实际会发生什么最适合您的需求和口味——可能是 Django 的 ORM 不适合您,如果不适合,您不应该使用它,但不幸的是,那里有很多错误信息,使情况变得困惑。

编辑以回应 Shane:

再次,您似乎被误导了:需要配置 SQLAlchemy(即,告诉使用什么数据库,如何连接等),然后才能使用它运行查询,那么 Django 需要类似配置的事实如何(通过您选择的方法完成——您不需要需要完整的 Django 设置文件)有什么缺点吗?

至于多数据库支持,您似乎感到困惑:支持水平很低。查询对象——不是 QuerySet,而是它将执行的底层 Query 对象知道它连接到什么数据库,并接受一个数据库连接作为它的初始化参数之一。告诉一个模型使用一个 DB 而另一个模型使用另一个数据库就像在管理器上设置一个方法一样简单,该方法将正确的连接信息向下传递到 Query。诚然,没有更高级别的 API,但这与“不支持”不同,也与“需要自定义代码”不同(除非您认为在 SQLAlchemy 中显式配置多个数据库,如果您想要多个数据库,则需要DBs,也是“自定义代码”)。

至于你是否最终间接使用了django.db中没有的东西,那又怎样? django.db 导入例如 django.utils 的位,因为存在数据结构和其他代码位,而不仅仅是对 ORM 有用,这一事实很好就我个人而言;如果某些东西具有外部依赖关系或使用标准 Python 库而不是 100% 独立,那么人们不妨提示一下。

关于python - 仅使用 Django 的 DB 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579511/

相关文章:

python - 如何使用 re.compile 和 re.findall 删除括号内的文本?

jquery - 如何在django中使用AJAX根据FK获取对象

java - Hibernate 忽略 @AttributeOverrides 注释并在错误的表中创建列

java - 需要帮助创建 hbm.xml

python - 刽子手 : File I/O strings and lists python

python - Pydoop 在大数据分析和数据科学中的重要性

django - Heroku:未找到 PIL==1.1.7 的匹配分布

python - Django 请求数据返回 str 而不是 list

c# - 'big' 使用 Poco 和 ORM 有什么优势?

python - 将简单元组转换为字典