首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误"sqlserver_ado不是可用的数据库后端“(PyISAPIe在IIS上)

错误"sqlserver_ado不是可用的数据库后端“(PyISAPIe在IIS上)
EN

Stack Overflow用户
提问于 2013-02-28 21:35:30
回答 1查看 6.6K关注 0票数 3

当使用IIS服务Django和django-mssql处理事务时,我在将Django项目连接到Server 2008时遇到了问题。我正在使用IIS 7和64位ActivePython 2.7

以下是我已安装的软件包的列表:

代码语言:javascript
复制
Django==1.4.5
distribute==0.6.19
django-mssql==1.2
pypm==1.3.4
pythonselect==1.3
pywin32==214
virtualenv==1.6.1
wsgiref==0.1.2

下面是堆栈跟踪的最后一部分:

代码语言:javascript
复制
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 40, in 
    backend = load_backend(connection.settings_dict['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 51, in load_backend
    raise ImproperlyConfigured(error_msg)
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Try using django.db.backends.sqlserver_ado instead.
Error was: DLL load failed: The specified module could not be found.

如果我将sqlserver_ado文件夹添加到C:\Python27\Lib\site-packages\django\db\backends中,并将settings.py中的数据库设置从'ENGINE': 'sqlserver_ado',更改为'ENGINE': 'django.db.backends.sqlserver_ado',,则会得到稍微不同的堆栈跟踪。

代码语言:javascript
复制
  File "C:\Python27\lib\site-packages\django\db\backends\sqlserver_ado\base.py", line 6, in 
    import dbapi as Database
  File "C:\Python27\lib\site-packages\django\db\backends\sqlserver_ado\dbapi.py", line 49, in 
    import pythoncom
  File "C:\Python27\lib\site-packages\pythoncom.py", line 2, in 
    import pywintypes
  File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 124, in 
    __import_pywin32_system_module__("pywintypes", globals())
  File "C:\Python27\lib\site-packages\win32\lib\pywintypes.py", line 64, in __import_pywin32_system_module__
    import _win32sysloader
ImportError: DLL load failed: The specified module could not be found.

如果我连接到sqlite数据库而不是Server,则应用程序可以正常工作。

如果我使用开发服务器运行项目,则连接到server可以正常工作。

因此,问题似乎在于IIS / PyISAPIe和django_mssql的结合。

其他一些问题也提到了类似的问题。这些问题都是通过在系统路径上获得python来解决的。我尝试过(通过检查路径和将文件复制到c:\python2.7中),但我得到了相同的错误。

关于最后一点信息,下面是用于开发服务器版本和IIS / PyISAPIe版本的PyISAPIe。

发展(工程):

代码语言:javascript
复制
C:\Users\Administrator\Desktop\django test C:\Python27\python27.zip C:\Python27\DLLs C:\Python27\lib C:\Python27\lib\plat-win C:\Python27\lib\lib-tk C:\Python27 C:\Users\Administrator\AppData\Roaming\Python\Python27\site-packages C:\Python27\lib\site-packages C:\Python27\lib\site-packages\win32 C:\Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info

IIS (失败):

代码语言:javascript
复制
C:\PyISAPIe C:\Windows\system32\python27.zip C:\Python27\Lib C:\Python27\DLLs C:\Python27\Lib\lib-tk c:\windows\system32\inetsrv C:\Python27 C:\Python27\lib\site-packages C:\Python27\lib\site-packages\win32 C:\Python27\lib\site-packages\win32\lib C:\Python27\lib\site-packages\Pythonwin C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg-info c:\inetpub\PyApp

如有任何建议或建议,我们将不胜感激。接下来,我将尝试普通的(即非活动的) Python,看看这是否有区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-28 23:02:36

从零开始安装64位python并遵循建议这里有效。这个问题肯定是Active Python的一些巧妙之处。

有一件事我确实注意到可能会有帮助。

  • 通过正常安装python和pywin32 (使用链接站点中的可执行文件),C:\Python27\Lib\site-packages包含一个名为pywin32_system32的文件夹,该文件夹包含需要复制到C:\Python27以解决问题的可执行文件。
  • 使用Active Python安装时,此目录不存在。

我还注意到,用于这两种安装方法(win32win32comwin32comext)的目录包含的文件略有不同。

我希望这在将来能给其他人带来一些痛苦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15146100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档