【问题标题】:Django SqlServer Improperly configured - settings.DATABASESDjango Sql Server 配置不正确 - settings.DATABASES
【发布时间】:2012-12-10 09:17:26
【问题描述】:

之前我有一个带有我的 pyodbc 模块的problem,它没有在我的 Windows 机器上运行的 apache 服务器上运行我的应用程序。我发现使用this hint 解决了让 django 项目在 apache 上运行的问题。

但现在我面临一个不同的问题。 django 应用程序在 apache 上运行,但在页面上抛出此错误。

ImproperlyConfigured at /auth/login/
settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

需要明确的是,这个项目在通过 djangos 内置服务器部署时运行完美。这就是我的数据库连接在 settings.py 中的样子

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'myDbName',
        'USER': 'myusername',    
        'PASSWORD': '',
        'HOST': '',
        'OPTIONS' : {
            'driver': 'SQL Native Client',
            'dsn': 'test',
            'MARS_Connection': True,
        },
    },    
}

更新:

我根据Django MSSQL Documentation 更新了我的代码,遇到了一些问题并通过更新我的 pywin32 使其工作

DATABASES = {
    'default': {
        'NAME': 'myDbName',
        'ENGINE': 'sqlserver_ado',
        'HOST': 'MYHOST',
        'USER': 'myusername',
        'PASSWORD': 'mypassword',
        'OPTIONS' : {
            'provider': 'SQLNCLI11', 
            'use_mars': False,
        },
    }
}

我的系统 - Windows 7、Apache 2.2、python 2.7、django 1.4.2、pyodbc-3.0.6.win32-py2.7

对此的任何提示或技巧都非常受欢迎,我一直在努力让这个项目启动并运行一段时间。

非常感谢

【问题讨论】:

  • Apache 是否在同一台机器上运行并可以访问相同的 Python 包?
  • 是的,之前我创建了演示 django 应用程序,上面写着“它成功了!恭喜你的第一个 Django 驱动的页面。”他们使用 Apache 完美运行。
  • 在这些情况下您是否使用了不同的数据库引擎?
  • 其中一个我使用了“sqlite3”,另一个我使用了“sql_server.pyodbc”。但是现在我开始有一种有趣的感觉,如果它与版本有关,因为这个项目最初是在 django 1.3 上构建的,我把它移到了 1.4,改变了结构和一切,在 djangos 内置服务器上工作正常,想知道是否settings.py 中缺少的其他内容
  • 如果您可以将其发布为您自己问题的答案并接受它,这样其他人可以看到您如何解决您的问题,那就太好了:)

标签: python sql-server django apache pyodbc


【解决方案1】:

如果您使用的是内置后端,则应指定数据库引擎,如下所示:

'ENGINE':'django.db.backends.mysql'

如果您不使用内置后端,则应在 ENGINE 设置中指定完全限定路径(即 mypackage.backends.whatever)。在django documentation here 中给出了有关定义数据库后端的信息。

更新:
您可以尝试使用django-mssql 将sql-server 与django 一起使用,并且可以使用here in readthedocs 获得清晰的文档。

【讨论】:

  • 我使用的是“sql-server”后端而不是 mysql。使用“ENGINE”:“sql_server.pyodbc”,当我使用 djangos 的内置服务器运行项目时有效。
  • @shabeer90 如果您不使用内置后端,则应指定要使用的包的确切位置。
  • 我不太确定。你可以试试this question。
  • 尝试使用您发送给我的链接。使用 djangos 内置服务器时工作正常,但不能在 APACHE 上运行:|
【解决方案2】:

我的问题的答案可能有点奇怪,但是这就是我如何在我的机器上工作的方式。

我遇到的主要问题是我的 DSN 没有与 django 项目建立联系,在我下面提到的步骤中,它是使它工作的全部差异的最后一步。以前我在创建我的 DSN 时选择了“集成 Windows 身份验证”,但令人惊讶的是,当我使用 djangos 内置服务器运行它时它可以工作。

  • 在 Windows 7 中打开应用 ODBC 数据源管理器(从“开始”菜单中搜索 ODBC)。
  • 在系统 DSN 选项卡下,单击添加按钮。
  • 选择 SQL Server Native Client 10.0
  • 输入DSNyour_dsn_name、描述(可选)和要连接的SQL Server,点击下一步
  • 选择“使用用户输入的登录 ID 和密码进行 SQL Server 身份验证”选项。
  • 输入登录 ID ('your_username') 和密码 ('your_password')。点击下一步、下一步和完成。

我把我的数据库连接改回原来的代码

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'MaDaMa_App',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'MYHOST',
        'OPTIONS' : {
            'driver': 'SQL Native Client',
            'dsn': 'your_dsn_name',
            'MARS_Connection': True,
        },
    },
 }

感谢所有帮助我解决此问题的人,希望这对那里的人有所帮助。

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多