Django数据库并不总是可用

时间:2014-04-22 19:11:45

标签: django django-models django-settings django-database

我在settings.py中指定了多个数据库。其中一个数据库是本地Oracle数据库,只能在我工作的计算机上使用。因此,当我在无法访问此Oracle数据库的计算机上打开我的站点时,我看到错误A server error occurred. Please contact the administrator.

因此,当我在工作计算机上时,我的代码工作正常,但是当我从另一台无法访问本地Oracle数据库的计算机上在线使用我的页面时,代码失败。

我不想远程访问本地数据库。我只是想在无法访问本地Oracle数据库时忽略该错误。

2 个答案:

答案 0 :(得分:1)

您可以在设置模块中使用local.py文件,该文件对您正在处理的环境而言是唯一的。给定设置模块,您可以将以下内容放在__init__.py

try:
    import .local
except ImportError:
    pass

然后,在Oracle数据库可用的计算机上,在本地设置文件中设置正确的设置,但不要将其签入到版本控制系统(例如,将其放入.gitignore)。

在导入本地设置后,还要注意设置中的顺序,如果要保留更改,则不应覆盖它们。您可以在文件中向下移动导入,或者只是将设置添加到现有的dict中。

答案 1 :(得分:0)

您可以在if中使用settings.py语句,因为它只是一个Python脚本。因此,您可以添加一个函数来检测您是否在工作,然后使用该函数来决定是否应将仅在工作的数据库添加到DATABASES变量。

# in settings.py

def at_work():
    'Determines whether the project runs at work'

if at_work():
    DATABASES = {...}
else:
    DATABASES = {...}

当然,如果您的模型依赖于仅在工作时可用的数据库,您将需要添加模拟数据库以允许在其他地方使用模型,即使没有可用数据。