Django-有一种获取当前数据库别名的方法吗? - python

我正在使用多个数据库的Django项目,正在寻找一种使用import或method获取当前数据库别名的方法。

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

python大神给出的解决方案

在Django中,没有“当前”数据库别名这样的东西。

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

(尽管@fasouto在使用QuerySet的私有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参数... db路由器类的规范说,它们应该接受**hints kwargs。他们还声明当前仅支持的提示是instance。但是,除非您有一个使用此提示的自定义路由器类,否则您将不需要提供当前实例。