Web2Py не будет подключаться к MSSQL

#sql-server-2008 #web2py

#sql-server-2008 #web2py

Вопрос:

Я не могу заставить web2py подключиться к mssql.

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

Моя строка подключения:

 db = DAL('mssql://testUser:password1@localhost/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. Если вы не получили ответа здесь (Massimo не может быть везде), попробуйте задать вопрос в GoogleGroup: groups.google.com/group/web2py

Ответ №1:

Я только что получил решение от Массимо Ди Пьерро на форуме Web2Py. Он определил причину и предоставил обходной путь.

Не уверен, нужен ли «импорт 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:password@localhost/testDB')
  

Комментарии:

1. MSSQLAdapter.driver = globals().get(‘pyodbc’, None) должно быть просто MSSQLAdapter.driver = pyodbc . Не уверен, почему это не устанавливается автоматически для вас. Должно быть, проблема с sys.path.

Ответ №2:

После подтверждения правильности вашего входа в систему и того, что у вас установлен pyodbc, убедитесь, что строка подключения к серверу выглядит следующим образом, если в имени вашего сервера БД есть обратная косая черта (например, localhost dbServerName):

     db = DAL('mssql://testUser:password@localhostdbServerName/testDB')
  

Вы также можете заменить localhost IP-адресом.

Окружающая среда:
Windows 7 Professional, 32-разрядная операционная система
SQL Server 2008 R2 подключение по сети
Web2py: установка исходного кода версии 2.4.6 стабильный
pyodbc: pyodbc-3.0.5.win32-py2.7.exe
Python 2.7.3