如何在Django中使数据库可选?

时间:2015-06-12 05:05:05

标签: django

我有一个带两个数据库的Django应用程序。一个拥有关键信息,另一个拥有一些很好的杂项数据。

第二个数据库不属于我,不可靠,我不能确定它总是响应或者它的模式总是与我的Django模型匹配。

我的问题是,当Django服务器找不到第二个数据库时,它无法启动。我想要做的是写一个Django视图,这样当第二个数据库好时它会显示它的数据,但是当它关​​闭或不遵守模型时,并不坚持。

用try-catch围绕模型和路由器会不会这样做?有人有任何其他建议吗?

1 个答案:

答案 0 :(得分:1)

如果连接到视图中的数据库,则会丢失django提供的ORM。您必须自己负责安全,连接和其他问题。但是,如果您坚持这样做,可以使用mysql-connector。试试这个link

此外,您需要从设置文件中删除此数据库的数据库设置。仅保留主数据库连接设置。

从设置控制数据库连接(注意这是一个黑客攻击)

settings.py文件中,进行以下更改。

import mysql.connector

try:
    cnx = mysql.connector.connect(user='user', password='password',
                              host='your_settings',
                              database='your_db_name')
    cnx.close()
    DATABASES['custom_db']  = {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'your_db_name',
    'USER': 'user',
    'PASSWORD': 'password',
    'HOST': 'ip_where_hosted',
    'PORT': '',
}
except:
    pass