2014-09-04 3 views
0

저는 Python 2.7 및 Oracle instant client 10.2.0.3이 설치된 Windows 7, 64bit를 사용합니다.파이썬에서 연결시 cx_Oracle이 자동으로 충돌 함 2.7

저는 파이썬에서 Oracle 데이터베이스와의 연결을 설정하려고합니다. 이를 위해 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) 

같은 코드를 연결하고 그 연결을 확인하려고 데이터베이스 테이블의 행.

그리고이 순간에 흥미로운 일이 일어납니다. 나는 3 개의 다른 환경, 묘사 한 원본 3, Python 장치 및 ipython에있는 묘사 한 활동을 실행한다.

문제는 ST3과 ipython에서 코드의이 덩어리가 cx_Oracle.connect (내가 다른 곳에서 print 문으로 확인한 것)과 함께 자동으로 충돌합니다.

하지만 파이썬 콘솔과 유휴 상태에서도 정상적으로 작동합니다. 또한 때때로 ipython에서 제대로 작동하지만 이유와 이유를 이해할 수 없습니다. ST3에서는 작동하지 않습니다.

는 ST는

메시지 [Finished in 0.4s with exit code 3221226356] 내가 cmd를에서 간단한 케이스의 CopyPaste에 첨부 파이썬과 ipython 콘솔의 동작을 설명하기 위해을 보여줍니다. 그것은 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> 

어디에서 문제가 발생합니까? 어떻게 해결할 수 있습니까? 미리 감사드립니다.

추신. 나는 ST3과 같은

try: 
    cx_Oracle.connect() 
except Exception as e: 
    print e 

ipython 예외를 처리하기 위해 시도했지만 스크립트는 cx_Oracle.connect에 종료() 어떠한 메시지가 나타납니다.

+0

cx_Oracle의 컴파일 된 부분에 버그가있는 것처럼 들리며, Python 예외를 발생시키지 않고 충돌합니다. –

+0

나는이 문제에 대해 Google에서 아무 것도 발견하지 못했습니다. 내 컴퓨터의 잘못된 구성이이 상황에서 발생한다고 생각하지만 실제로 무엇인지 이해할 수는 없습니다. 하지만 어쩌면 당신은 글을 쓰고 있으며 이것은 버그 다. 개발자들이 여전히이 라이브러리를 지원하기를 희망한다. –

+0

아직 유지 관리 된 것 같습니다. 몇 달 전에 5.1.3 릴리스가있었습니다. –

답변

0

나는이 환경을 직접 시도했지만 동일한 문제가 발생하지 않았습니다. 아마도 faulthandler 나 gdb 또는 그와 비슷한 것을 사용하여 충돌이 발생한 곳을 파악할 수 있습니까? cx_Oracle은 여전히 ​​(나에 의해) 유지되고 있으므로 버그를 발견하면 기꺼이 고칠 것입니다! 또한 IPython이나 ST3 또는이 두 가지와 cx_Oracle 사이의 상호 작용에 문제가있을 수 있습니다. 그러나 문제를 복제 할 수 없으므로 더 진행할 수 있도록 일종의 스택 추적을 제공해야합니다.