2014-12-02 2 views
1

У меня возникли проблемы с получением PYODBC для работы на моем компьютере с Windows.Указать администратора ODBC в PYODBC

import pyodbc 
c = pyodbc.connect('DSN=netezza') 

Обнаружена ошибка говорит:

Ошибка: ('IM003', '[IM003] Указанный драйвер не может быть загружен из-за системной ошибки 193 ...')

Googling this error показал, что это может быть проблемой для 32-битных и 64-разрядных драйверов. Другая статья предполагает, что администратор по умолчанию для PYODBC использует 64-разрядный администратор источника данных. На самом деле, я замечаю, что когда я запускаю WinSQL, он может без проблем работать с базой данных, поскольку, похоже, он использует другого администратора источника данных (32-разрядную версию). Однако я не могу понять, как указать 32-разрядного администратора источника данных для PYODBC. Я понимаю, что я должен указывать PYODBC на % windir% \ SysWOW64 \ odbcad32.exe, но я просто не знаю, где мне нужно указывать это.

Обновление:

import pyodbc 
c = pyodbc.connect('DRIVER={NetezzaSQL};SERVER=<ip address>;PORT=<port>;DATABASE=<db>;UID=<username>;PWD=<password>') 

Это также получают ту же самую ошибку, как описано выше.

+0

Вы используете 32 бит или 64 бит Python? – Talvalin

ответ

-1

Попробуйте это:

c = pyodbc.connect('DRIVER={SQL Server};DSN=netezza') 

По желанию, вы можете использовать эту форму:

c = pyodbc.connect('DRIVER={SQL Server};SERVER=yourserver.com;DATABASE=netezza;UID=youruser;PWD=yourpassword') 

Я надеюсь, что это помогает!

+0

К сожалению, это не помогло. Ошибка все тот же. Можете ли вы объяснить логику того, как это делается, что-то изменит? Предполагаете ли вы, что указание драйвера может каким-то образом изменить администратора источника данных (32-разрядный или 64-разрядный)? – slaw

+0

Netezza - это устройство хранилища данных и недоступно через драйвер ODBC для SQL Server. – Bryan

+0

Ага, я знал, что где-то раньше я слышал о Нетезе ... Я думал, что он просто ссылается на базу данных под названием Netezza. Возможно ли, что есть база данных для метаданных устройства? – FlipperPA

0

Архитектурная версия python и драйвер ODBC должны совпадать.

Например, если у вас установлен 32-разрядный драйвер Netezza, вам понадобится 32-разрядный питон. Если у вас 64-разрядный драйвер, требуется 64-разрядный питон.

Вы можете начать интерактивный питона оболочки для подтверждения того, что на вашем пути (скриншот ниже 64-разрядным питон):

python interactive shell

+0

Но комментарии в этом посте: http://stackoverflow.com/questions/11108862/how-to-install-pyodbc-64-bit. предполагает, что можно использовать 32-разрядный администратор ODBC (odbcad32.exe) с 64-разрядной установкой python (мне нужно будет проверить, но я считаю, что у меня 64-разрядный Python). Я не хочу обсуждать этот вопрос, но я не понимаю, почему 64-разрядный Python несовместим с 32-разрядными драйверами. Я понимаю, что 32-разрядный Python несовместим с 64-битными драйверами. – slaw

+0

Итак, есть ли способ указать драйвер? Что произойдет, если установлены 32-разрядный драйвер и 64-разрядный драйвер? Как это можно примирить? – slaw