cx_Oracle молча вылетает при подключении в python 2.7
Я использую Windows 7, 64bit, с установленным Python 2.7 и Oracle Instant Client 10.2.0.3.
Я пытаюсь установить соединение с базой данных Oracle из Python. Для этого я загружаю cx_Oracle-5.1.2-10g.win32-py2.7.msi и устанавливаю его.
UPD. это ошибка я имел в виду cx_Oracle-5.1.2-10g.win-amd64-py2.7.msi
Затем я пытаюсь подключить использовать код, как это
import cx_Oracle
ad = cx_Oracle.makedsn('127.0.0.1', '1521', 'XE')
con = cx_Oracle.connect('user', 'password', ad)
И убедитесь, что соединение установлено правильно, выбрав несколько строк из таблицы базы данных.
И в этот момент происходит что-то интересное. Я выполняю описанные действия в трех различных средах: Sublime Text 3, Python Console и ipython.
Проблема в ST3, а в ipython этот кусок кода молча вылетает на линии с cx_Oracle.connect
(Я проверил это с print
постановка в разных местах).
Но в консоли Python и в режиме ожидания он работает просто отлично. Более того, иногда это работает правильно в ipython, но я не могу понять, почему и когда. В ST3 это никогда не работает.
ST показывает сообщение [Finished in 0.4s with exit code 3221226356]
Чтобы продемонстрировать поведение в консоли Python и ipython, я прилагаю копию простого случая из cmd. Он просто выходит из ipython.
C:\Users\Alexey>python
Python 2.7.7 (default, Jun 1 2014, 14:21:57) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> cx_Oracle.connect()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cx_Oracle.DatabaseError: ORA-12560: TNS:protocol adapter error
>>> exit()
C:\Users\Alexey>ipython
Python 2.7.7 (default, Jun 1 2014, 14:21:57) [MSC v.1500 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 2.2.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import cx_Oracle
In [2]: cx_Oracle.connect()
C:\Users\Alexey>
В чем проблема? Как я могу решить это? Заранее спасибо.
PS. Я пытался обрабатывать исключения в ST3 и IPython, такие как
try:
cx_Oracle.connect()
except Exception as e:
print e
но сценарий завершается на cx_Oracle.connect() и сообщение не появляется.
1 ответ
Я сам пробовал эту среду и не испытывал такого же поведения. Может быть, использовать FaultHandler или GDB или другой эквивалент, чтобы выяснить, где происходит сбой? cx_Oracle все еще поддерживается (мной), поэтому, если вы сможете найти ошибку, я с радостью ее исправлю! Это также может быть проблема с IPython или ST3 или в некотором взаимодействии между ними и cx_Oracle. Однако, поскольку я не могу воспроизвести проблему, вам нужно будет предоставить некоторую трассировку стека, чтобы мы могли продолжить.