Развертывание cx_Oracle в Windows

Я пытаюсь использовать модуль cx_Oracle в python для доступа к удаленной базе данных и вставки или удаления строк в таблицах. BTW Я загрузил мгновенный клиент oracle 11.1, а также версии odbc и sqlplus. Я установил переменные среды ORACLE_HOME и TNS_ADMIN в каталог. У меня есть распакованные файлы и добавьте этот каталог в переменную PATH . Поскольку я googled, я думаю, что должны быть некоторые файлы .ora но я не могу их найти.

Я могу использовать команды sqlplus из командной строки, но моя основная проблема заключается в том, что я не могу установить и использовать cx_Oracle . Я не хочу использовать скрипты командной строки; Я просто хочу использовать cx_Oracle как API.

Может ли кто-нибудь дать мне полное объяснение, я действительно застрял там. Все документы в этой области расплывчаты. С наилучшими пожеланиями.

ИЗМЕНИТЬ 1:

Я попробовал исходный пакет cx_Oracle с python setup.py install python setup.py build --compiler=mingw32 и python setup.py build --compiler=mingw32 . Я не получаю ошибку oracle снова, но я получаю сообщение об ошибке command 'gcc' failed . Я попробовал компилятор MinGW и отредактировал переменную среды PATH чтобы содержать каталог установки MinGW (например, C:\MinGW ); Я также установил Microsoft Visual C ++ (версии 2005, 2008 и 2010); но я все еще получаю ошибку.

EDIT 2:

Поскольку @ jpmc26 упоминал о файлах tnsnames.ora , я решил добавить, что я попытался создать tnsnames.ora а также файл sqlplus.ora и поместить их в каталог C:\oracle\instant_client_11_1\network\admin ; но поскольку я googled, я понял, что если вы используете cx_Oracle.connect(username, password, cx_Oracle.makedsn(ip, port, sid)) , вы можете пропустить файлы .ora . cx_Oracle.makedsn сделает сама структуру.

Я попробовал много способов окончательно решить проблему. Поскольку я думаю, что должен написать исчерпывающий ответ, я напишу о проблемах, с которыми я столкнулся, и их решениях соответственно; надеясь, что это может помочь другим. Я также сменил имя вопроса на подходящее. Вот что я cx_Oracle во время установки модуля cx_Oracle в Windows 7 – 32-битной версии (я думаю, что другие версии окон будут иметь похожие решения, но я не уверен):

  • Я попытался установить cx_Oracle с помощью easy_install и я получил ошибку. No oracle client installed . Я загрузил базовый мгновенный клиент oracle и мгновенный клиент oracle sdk для окон с официального сайта Oracle и установил его с помощью следующих шагов:

    Разархивируйте базовый мгновенный клиент oracle в каталог C:\oracle\instant_client_11_1\ .

    Unzip oracle sdk мгновенный клиент и скопируйте папку sdk в каталог C:\oracle\instant_client_11_1\ , следовательно, у нас есть каталог как C:\oracle\instant_client_11_1\sdk\ .

    Добавьте C:\oracle\instant_client_11_1\ в конец PATH среды PATH .

    Добавьте новую переменную с именем ORACLE_HOME и установите для C:\oracle\instant_client_11_1\ значение.

    Перезапустить компьютер.

  • Я попытался установить cx_Oracle снова с помощью easy_install и я получил command 'gcc' failed: no such file or directory ошибкой command 'gcc' failed: no such file or directory и в некоторых случаях unable to find vcvarsall.bat ; это было потому, что у меня не было компилятора C ++, поэтому я выполнил следующие шаги, чтобы решить эту проблему:

    Загрузите Microsoft Visual C ++ и установите его.

    Загрузите MinGW и установите его; обратите внимание, что вы должны установить модуль GCC.

    Добавьте C:\MinGW\ и C:\MinGW\bin\ (который содержит gcc.exe ) в конец PATH среды PATH .

  • Я попытался установить cx_Oracle снова с помощью easy_install и я получил command 'gcc' failed with exit status 1 ошибкой command 'gcc' failed with exit status 1 ; Я пробовал этот шаг, чтобы решить эту проблему:

    Откройте файл C:\Python27\Lib\distutils\ cygwincompiler.py и удалите все –mno-cygwin вхождения в этом файле; это связано с тем, что последние версии GCC удалили параметр –mno-cygwin и его не должно быть.

  • Я попытался установить cx_Oracle используя easy_install и это сработало.

Но во время поиска в Интернете я нашел пару трюков, которые могут быть полезны:

  • Если вы получили ошибку, no module named win32api , это связано с тем, что вы не установили расширения win32 на python на своем компьютере, вы должны загрузить модуль pywin32 из Source Forge и установить его.

  • Если вам все равно не удалось, вы можете попробовать более старую версию cx_Oracle ; но имейте в виду все, о чем мы говорили в вышеприведенных строках. Здесь вы можете найти все версии cx_Oracle .

  • Если вы хотите использовать sqlplus вы должны сделать еще несколько шагов. Для этого выполните поиск в Интернете.

Возможно, вы захотите попробовать некоторые предварительно созданные двоичные файлы . К сожалению, установщик является MSI, поэтому установка с использованием virtualenv невозможна.

Я считаю, что то, что вы имеете в виду с файлом ora – это файл имен TNS. Если это так, это текстовый файл с определенным форматом. Это может помочь: http://www.orafaq.com/wiki/Tnsnames.ora . Согласно FAQ , Oracle будет искать в каталоге TNS_ADMIN файл tnsnames.ora . Обратите внимание, что использование файла имен TNS может быть необязательным. Во многих случаях вы можете отказаться от того, что вы обычно помещаете в файл имен TNS (что-то вроде (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=ORA11))) ) в том же месте вы бы получили имя TNS.

Добро пожаловать в Oracle. Удачи. Это вам понадобится. (Да, все так сложно с Oracle.)