#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