我想尊重数据库为“只读”,从不写入数据库。有没有办法轻松阻止syncdb甚至打扰检查更新数据库?
使用Django 1.2并具有多个数据库的能力,它希望能够查询数据库以获取信息。我永远不需要真正写入该数据库。
但是,如果syncdb运行并尝试更新该数据库,我会感到害怕(因为我可能没有该数据库的技术上只读帐户)。主要是,我只想使用/滥用Django ORM作为查询该数据库的方法。
更新抱歉,我需要能够在settings.py中同步其中一个数据库,而不是特定的数据库。
答案 0 :(得分:4)
http://docs.djangoproject.com/en/dev/topics/db/multi-db/#an-example
def allow_syncdb(self, db, model):
...
这是一个明确的开始......
答案 1 :(得分:1)
如果您不需要syncdb
,请不要运行它,这很简单。更新数据库就是它所做的,所以如果你不需要它,你就不应该运行它 - 它没有做任何其他事情。
但是,如果您实际上询问如何阻止syncdb运行,则可能的一种方法是在您的某个应用程序中定义“dummy”syncdb命令。关注custom management command instructions,但只需将pass
放入命令的handle
方法中。 Django将始终首先找到您的命令版本,使其成为无操作。
答案 2 :(得分:0)
使用Microsof SQL Server数据库(uhhg)的只读镜像时,我遇到了这个问题。因为您无法在单个应用或数据库上有选择地运行syncdb
。但是,当您第一次创建新的Django项目或安装需要它的新应用程序(如syncdb
)时,有运行south
。我所做的是将我的只读数据库放在自己的Django应用程序中,然后将空的South迁移添加到该应用程序。那样syncdb
认为南方正在为这些应用程序处理数据库设置,而south
对它们没有做任何事情!
manage.py schemamigration ap_with_read_only_database --empty initial_empty_migration_that_does_nothing
这使您可以自由地管理django之外的该数据库的模式。