cx_Oracle在python 2.7中的connect上静默崩溃



我使用的是Windows 7,64位,安装了Python 2.7和Oracle即时客户端10.2.0.3。

我尝试从python建立与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)

并通过从数据库表中选择一些行来检查连接是否正确设置。

此时此刻,发生了一些有趣的事情。我在三个不同的环境中执行所描述的操作:Sublime Text 3、Python控制台和ipython。

问题出现在ST3和ipython中,这段代码在使用cx_Oracle.connect的行中静默崩溃(我在不同的地方用print语句检查了这一点)。

但在python控制台和空闲中,它工作得很好。此外,有时它在ipython中正常工作,但我不明白为什么以及何时。在ST3中,它从不起作用。

ST显示消息[Finished in 0.4s with exit code 3221226356]

为了演示python和ipython控制台中的行为,我附加了cmd中简单大小写的复制粘贴。它刚从ipython退出。

C:UsersAlexey>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:UsersAlexey>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:UsersAlexey>

问题出在哪里?我该如何解决?提前谢谢。

PS。我尝试在ST3和诸如之类的ipython中处理异常

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

但脚本在cx_Oracle.connect()上终止,并且没有显示任何消息。

我自己尝试过这种环境,但没有经历同样的行为。也许可以使用faulthandler或gdb或类似的工具来确定崩溃发生的位置?cx_Oracle仍然由我维护,所以如果你能找到一个错误,我会很乐意修复它!这也可能是IPython或ST3的问题,或者这两者与cx_Oracle之间的某些交互中的问题。然而,由于我无法复制这个问题,您需要提供某种类型的堆栈跟踪,以便我们可以继续进行。

最新更新