2016-02-19 7 views
-1

Использование Python 3.4 для подключения к Oracle 11 (64 бит), но я не могу получить соединение независимо от того, что я пытаюсь. Я пробовал как пакет cx_Oracle, так и пакет pyobbc без успеха.Проблемы с Python Подключение к Oracle (cx_Oracle и Pyodbc)

Попытки с cx_Oracle

conn = cx_Oracle.connect('username/[email protected]') 

и

 oradsn = cx_Oracle.makedsn(host, port, server) 
     conn = cx_Oracle.connect(user="username, password=password, dsn=oradsn") 

Ошибка: Не удается получить среда Oracle обрабатывать


Попытки с pyodbc

conn = pypyodbc.connect('DRIVER={ORACLE ODBC DRIVER};DBQ=dsn name;UID=username;PWD=password') 

и

conn = pyodbc.connect('DSN=dsn;SERVER=server;UID=username;PWD=password') 

Ошибка: Указанный драйвер не может быть загружен из-за ошибки системы 1114: динамически подключаемой библиотеки (DDL) инициализации процедура не удалась. (< ---- sqora32.dll находится в этом месте, я проверил)


переменную окружения:

ORACLE_HOME = C:\Oracle\Ora11_x64 

Есть предложения?

Благодаря

ответ

0

В результате моей проблемы с использованием pyinstaller использовался Cx_oracle. Я создавал один исполняемый файл из моего сценария python, и оказалось, что pyinstaller включал файл OCI.dll. Как только я изменил Pyinstaller, чтобы удалить этот файл, все подключенное к другой системе было выполнено с исполняемым файлом.

Более подробная информация здесь: https://mail.python.org/pipermail/tutor/2014-December/103608.html

^^ В приведенном выше примере он добавляет DLL-файл, но я нашел мину работать путем удаления OCI.DLL-файл и не обращая внимания на другую, он говорит о

И как изменить pyinstaller: https://pythonhosted.org/PyInstaller/#using-spec-files

0

Во-первых, на окнах, не используйте переменную ORACLE_HOME среды. Это следует использовать только на платформах Linux/Unix. Вместо этого вы должны использовать переменную среды PATH.

Во-вторых, используйте SQL * Plus, чтобы подтвердить, что вы можете подключиться к базе данных. Существует немало страниц, на которых обсуждается, как это сделать. Вот один:

http://penguinman-techtalk.blogspot.ca/2009/02/sqlplus-connection-to-remote-oracle.html

Наконец, если вы хотите использовать makedsn вам нужно сделать следующее:

dsn = cx_Oracle.makedsn(host, port, server) 
conn = cx_Oracle.connect(user, pwd, dsn) 

И если вы просто хотите, чтобы подключиться к базе данных, на который ссылается местным TNSNAMES .ORA файл (называемый tnsentry), вы можете сделать следующее:

conn = cx_Oracle.connect(user, pwd, tnsentry) 

ИЛИ

conn = cx_Oracle.connect("user/[email protected]") 
+0

Спасибо за ответ! Несколько вопросов: 1. Какова должна быть переменная PATH? 2. Я не могу подключиться через SQL Plus (ошибка адаптера TNS (?)). Однако я могу подключиться через Oracle SQL Developer. Не уверен, что это значит. –

+0

Переменная среды PATH должна включать расположение исполняемых и клиентских библиотек SQL * Plus. SQL Developer использует Java, тогда как SQL * Plus (и cx_Oracle) использует OCI, поэтому они используют несколько разных методов для подключения. Ошибка адаптера TNS означает, что вы неправильно установили строку подключения. Если вы предоставите подробную информацию о том, как вы подключаетесь, это может помочь мне в дальнейшем. :-) –

+0

Хорошо, я изменил строку подключения и смог подключиться к SQLPlus! Хорошие новости. НО я все еще получаю сообщение «Невозможно получить ошибку обработки среды Oracle. моя переменная PATH имеет «C: \ Oracle \ Ora11_x64 \ BIN» в строке. Я должен упомянуть, что файл tnsnames.ora НЕ содержит мое соединение, и у меня нет прав доступа для изменения этого файла. Смогу ли я подключиться с помощью Cx_oracle? –

Смежные вопросы