首页 > 解决方案 > 如何以只读模式进入 Django shell?

问题描述

我有兴趣使用一种只允许读取操作的 Django shell 形式。到目前为止,我已经阅读了这篇博客文章(https://chase-seibert.github.io/blog/2012/12/21/read-only-django-shell.html),这似乎是基于设置django.db.router.db_for_writeNone.

这是推荐的方法吗?正如我从https://docs.djangoproject.com/en/2.1/topics/db/multi-db/#using-routers了解到的那样,这django.db.router是“主路由器”,我不清楚我是否可以修改它属性而不影响数据库运行的环境。

也许还有另一种方法,比如创建一个只有读取权限的数据库(在我的例子中是 MySQL)用户,然后启动一个以该用户身份连接的 Django shell?

标签: mysqldjango

解决方案


这比人们预期的要复杂一些,因为听起来您需要一组单独的设置来用于shell命令而不是正常的 django 操作。所以三步过程:

  1. 创建自己的路由器类
  2. 创建一个单独的设置文件以与shell命令一起使用
  3. 使用环境变量或单独manage.py的来运行shell命令

推荐阅读