在settings.py中的Django项目多数据库配置

时间:2011-09-20 13:47:39

标签: python django configuration multi-database

我目前正在使用C#编写的asp.NET内部网站,并在Django Web框架中重做它。在确定.NET站点正在使用的所有当前数据源之后,我已经开始配置和测试我从Django框架内连接到这些数据库的能力。

  • 平台: Archlinux
  • Django版本: 1.3.1
  • Python版本: 2.7

问题: 每当我尝试连接到未定义为默认数据库的任何数据库时,我都无法这样做。此外,任何我无法连接的数据库,只有当它被定义为不是默认值时。

为了进一步说明这一点,我将提供修改后的例子:

DATABASES = {
    'default': {
        'ENGINE': 'postgresql_psycopg2',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    },
    'mssql': {
        'ENGINE': 'sql_server.pyodbc',
        'DATABASE_ODBC_DSN': 'name_of_sql_server',
        'DATABASE_NAME': 'Logs',
        'DATABASE_USER': r'user_name',
        'DATABASE_PASSWORD': 'password',
        'DATABASE_OPTIONS': {
            'driver': 'sql_server_driver',
            'dsn': 'MSSQL_Logs',
        },
    }
}

如果我注释掉第一个默认数据库定义,并将mssql数据库的名称更改为默认值,我可以通过以下方式访问dbshel​​l:

manage.py dbshell

但是,如果我尝试通过以下方式直接访问mssql数据库:

manage.py dbshell mssql

我收到错误:

TypeError: handle() takes exactly 1 argument (7 given)

几乎就好像它无法正确解析定义。所以我的问题基本上是这样的:在将它们配对在一起时,我是否错误地定义了数据库?

1 个答案:

答案 0 :(得分:0)

根据此链接https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-dbshell,您应该使用python dbshell --database mssql