我正在为我的雇主构建内部网,我决定尝试使用django服务器设置。我们使用带有MSSQL 2008的Windows服务器,其中包含大量数据。我希望将Intranet与用于身份验证的域和现有的MSSQL服务器集成。
似乎所有事情都与MSSQL服务器的连接有关。这个问题看起来很简单:它试图使用错误的凭据。我已将IIS设置为使用Windows身份验证并禁用匿名登录。当我访问该网站时,系统会提示我输入我的凭据。当页面尝试加载时,django抛出错误,但异常:
Exception Type: Error
Exception Value: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'DOMAIN\\DJANGO$'. (18456) (SQLDriverConnect)")
Exception Location: c:\python35\lib\site-packages\sql_server\pyodbc\base.py in get_new_connection, line 301
请注意,DJANGO是我用来测试此服务器的虚拟计算机的名称。似乎解决方案就像弄清楚如何通过django从IIS传递Windows登录凭据以进行初始MSSQL连接一样简单。
现在有一些细节,我有:
我有django settings.py条目:
...
MIDDLEWARE_CLASSES = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.PersistentRemoteUserMiddelware',
...
]
...
WSGI_APPLICATION = 'intranet.wsgi.application' #intranet is the project name
...
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'DatabaseName',
'HOST': 'Server',
'AUTOCOMMIT': False,
}
}
...
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.RemoteUserBackend',
]
...
IIS和django之间的交互基于https://pypi.python.org/pypi/wfastcgi的教程工作,WSIG_HANDLER被Django on IIS: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet的建议改变了(因为内部网没有名为wsgi_app()的模块而提示更改,不知道我是怎么想到尝试它的,但它起作用了,我继续前进。)
为了实现这一目标需要付出很多努力,希望这是一个简单的解决方案。我的另一个想法是放弃django sql模型系统并处理直接查询,但我宁愿在重新开发轮子之前采用“正确”的方式。
答案 0 :(得分:0)
尝试使用以下对我有用的方法来尝试运行Django乐趣的人有些晚了:
DATABASES = {
'default': {
'NAME': 'my_database',
'ENGINE': 'sql_server.pyodbc',
'HOST': 'dbserver',
'PORT': 'XXXX',
'OPTIONS': { 'DRIVER':'SQL Server Native Client 11.0', 'Extra_Params':'Trusted_Connection=True'},
}}
祝您编程愉快!
答案 1 :(得分:0)
我遇到了这个问题,并救了我this link教程
对于Django App,只需将连接更改为以下代码即可,并与Identity = Localsystem完美配合
cnxn = pyodbc.connect(
"Driver={SQL Server Native Client 11.0};Server=MyServerName;Database=MyDbName; uid=MyUsernameLoginDb; pwd=MyDbPasswordLoginToDB; ")