2011-10-25 64 views
3

我無法獲得web2py連接到mssql。Web2Py將無法連接到MSSQL

<type 'exceptions.RuntimeError'>(Failure to connect, tried 5 times: 
'NoneType' object has no attribute 'connect') 

我的連接字符串是:

db = DAL('mssql://testUser:[email protected]/testDB') 

環境
   的Windows Server 2008 R2,64位操作系統
    SQL Server 2008 R2的,局部的。
    Web2py:源代碼安裝版本1.99.2(2011-09-26 06:55:33)穩定。
    pyodbc
   的Python 2.7.2

我測試過,我可以用pyodbc連接。以下代碼有效:

import pyodbc 
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=testDB;UID=testUser;PWD=password1') 
cursor = cnxn.cursor() 
cursor.execute("select * from tbUsers") 
rows = cursor.fetchall() 
for row in rows: 
    print row 

感謝您的時間。

科裏。

+1

如果你沒有在這裏得到一個答案(馬西莫不能無處不在),試着問在GoogleGroup:http://groups.google.com/group/web2py – JMax

+0

會做。謝謝你的提示。 – cjmarques

回答

1

我剛剛收到了來自Massimo Di Pierro的解決方案Web2Py forum。他推斷了原因並提供瞭解決方法。

不確定是否需要「import pyodbc」。一旦分配了驅動程序,即使重新啓動服務器後,它仍然保留。

# Test if the mssql driver is assigned. Sets it up if it isn't. 
import pyodbc 
from gluon.dal import MSSQLAdapter 
if not (MSSQLAdapter.driver): 
    MSSQLAdapter.driver = globals().get('pyodbc',None) 

db = DAL('mssql://testUser:[email protected]/testDB') 
+1

MSSQLAdapter.driver = globals()。get('pyodbc',None)應該是MSSQLAdapter.driver = pyodbc。不知道爲什麼這不會自動爲您設置。必須是sys.path問題。 – Massimo

0

確認您的登錄信息是正確的,並且已經pyodbc安裝,確保服務器的連接字符串如下,如果你的數據庫服務器名稱中有一個反斜槓(如本地主機\ DBSERVERNAME後):

db = DAL('mssql://testUser:[email protected]\dbServerName/testDB') 

您也可以使用IP地址替換localhost。

環境:
Windows 7專業版32位操作系統
的SQL Server 2008 R2通過網絡連接
的web2py:源代碼安裝版本2.4.6穩定
pyodbc:pyodbc-3.0.5 .win32-py2.7.exe
的Python 2.7.3