阻止syncdb更新Django中的数据库?

时间:2010-08-13 21:28:39

标签: database django

我想尊重数据库为“只读”,从不写入数据库。有没有办法轻松阻止syncdb甚至打扰检查更新数据库?

使用Django 1.2并具有多个数据库的能力,它希望能够查询数据库以获取信息。我永远不需要真正写入该数据库。

但是,如果syncdb运行并尝试更新该数据库,我会感到害怕(因为我可能没有该数据库的技术上只读帐户)。主要是,我只想使用/滥用Django ORM作为查询该数据库的方法。

更新抱歉,我需要能够在settings.py中同步其中一个数据库,而不是特定的数据库。

3 个答案:

答案 0 :(得分:4)

嘿,我想我会回答我自己的问题(RTFM!)......

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之外的该数据库的模式。