python - Django - 有没有办法获取当前数据库别名?

标签 python django django-models django-orm

我正在一个包含多个数据库的 django 项目中工作,我正在寻找一种使用导入或方法获取当前数据库别名的方法。

我一直在文档中搜索,但没有找到任何有用的信息。

最佳答案

Django 中不存在“当前”数据库别名之类的东西。

查看数据库路由器的文档以了解原因:
https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#database-routers

(尽管 @fasouto 通过使用 QuerySet 的私有(private) API,在特定模型上的读取操作上下文中正确显示了“当前”别名)

试试这个:

from django.db import router

alias_for_read = router.db_for_read(MyModelClass)
# optionally:
alias_for_read = router.db_for_read(MyModelClass, instance=my_model_instance)

# similarly:
alias_for_write = router.db_for_write(MyModelClass)
alias_for_write = router.db_for_write(MyModelClass, instance=my_model_instance)

关于instance参数...数据库路由器类的规范表明它们应该接受**hints kwargs。他们还指出,当前仅支持的提示是实例。但除非您有一个使用此提示的自定义路由器类,否则您不需要提供当前实例。

关于python - Django - 有没有办法获取当前数据库别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30443508/

相关文章:

python - Django:allow_tags和short_description如何工作?

django - 如何将 Django 模拟实例传递给类方法?

python - Pandas:如何从字典创建日期时间数据帧索引

python - Windows 7 上的 ipython 找不到 pyreadline

python - Python 中从一个文件到多个字典

python - 在 64 位 linux 机器上运行 32 位 Python 脚本以使用 32 位客户端连接到 oracle DB

linux - 在Django中连接服务器linux ubuntu系统

python - 当查询返回Null(无对象)时如何在django模板中显示 "nothing found"?

python - 为创建 Django 模型实例添加日志记录的最佳方法是什么?

Django 无法进行迁移