在Windows中安装Python cx_Oracle模块并连接到Oracle数据库

问题描述:

我一直在试图获得这个安装和设置,尽管有几个链接描述如何做到这一点,我只是没有得到这个工作。我将介绍第一次设置:在Windows中安装Python cx_Oracle模块并连接到Oracle数据库

  • 我的电脑:Windows 8.1中的企业(62位)
  • 远程服务器:Oracle数据库版本12.1.0.2
  • C:\Users\Pymat\Oracle\instantclient_12_1 这里是oraocci12.dll所在,以及其他文件夹和文件
  • C:\Users\Pymat\AppData\Local\Continuum\Anaconda3 这里就是python.exe的位置(即os.path.dirname(sys.executable)) 在脚本中,我有print (sys.version)这给: 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]

我已经提到的指令从hereherehereherehere

问题1:哪一个是cx_Oracle的正确下载? 我去cx_Oracle 5.2.1here 和下载:

cx_Oracle-5.2.1-12c.win-amd64-py3.5.exe (md5) 
cx_Oracle-5.2.1-12c.win32-py3.5.exe (md5) 

目前尚不清楚其中的这些是正确.exe下载(或者两者是正确的)。无论如何,我使用12c来保持版本与Oracle数据库版本一致,尽管通过这整个过程,在任何情况下都不会与远程服务器上的Oracle数据库进行交互。

问题2:是否cx_Oracle正确下载或实际上丢失?

在以下路径:

C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Lib\site-packages 

我发现:

cx_Oracle.cp35-win_amd64.pyd 
cx_Oracle.cp35-win32.pyd 

不过,我不在此目录(或任何其他)的cx_Oracle下找到,例如像Verion-5.1.2-11g.win32-py2.7,按here。我怀疑找到cx_Oracle模块存在问题。另见问题5

问题3:我的环境变量配置是否正确?

(我)当我使用Windows的图形用户界面来检查变量,例如here我看到:

ORACLE_HOME 
C:\Users\Pymat\Oracle\instantclient_12_1; 
C:\Users\Pymat\Oracle\instantclient_12_1\vc12 

PATH 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Scripts; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Library\bin; 
C:\Users\Pymat\Oracle\instantclient_12_1; 

注:分号缺少在ORACLE_HOME结束。那是对的吗?

(ii)当我在命令中使用C:\Users\Pymat>echo %PATH%

C:\ProgramData\Oracle\Java\javapath; 
C:\WINDOWS\system32; 
C:\WINDOWS; 
C:\WINDOWS\System32\Wbem; 
C:\WINDOWS\System32\WindowsPowerShell\v1.0\; 
C:\Users\Pymat\.dnx\bin; 
C:\Program Files\Microsoft DNX\Dnvm\; 
C:\Program Files\Microsoft SQL Server\130\Tools\Binn\; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Scripts; 
C:\Users\Pymat\AppData\Local\Continuum\Anaconda3\Library\bin; 
C:\Users\Pymat\Oracle\instantclient_12_1; 

(三)当我进入Python的外壳和使用sys.path

'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\python36.zip', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\DLLs', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\Sphinx-1.5.1-py3.6.egg', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\win32', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\win32\\lib', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\Pythonwin', 
'C:\\Users\\Pymat\\AppData\\Local\\Continuum\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg' 

问题4:即时客户端下载,哪些下载实际上很重要?

在Oracle上注册后,我从here下载在版本12.1.0.2的“即时客户端软件包 - 基本”“即时客户端程序包 - SDK”。有些网站没有提到SDK包,但我仍然下载了它。

这些被下载到我的电脑(不在Oracle DB驻留的地方)。

问题5:为了测试安装成功,我进入了Python的外壳和使用:

import os 
os.chdir("C:\\Users\\Pymat\\Oracle\\instantclient_12_1") 
import cx_Oracle 

但后来我得到:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ModuleNotFoundError: No module named 'cx_Oracle' 

为什么这一步不工作?

问题6:我无法在Eclipse中正确使用控制台,但是Command中的Python shell工作正常,为什么?

当我点击出 “PyDev控制台”,然后“巨蟒控制台”,然后我得到:

'Create Interactive Console' has encountered a problem 
Error initializing console 

这已成为一个有点头疼,虽然我”米仍然是一个Python新手,我认为这个安装过程可能会更容易。欢迎任何建议。

+0

嗨!有趣的话题!问题列表在这里没有多大意义!请分开您的问题,以便回答这些问题!另见[问]!谢谢! – jkalden

+0

嗨,我已经分开了问题。其中有六个,涉及安装问题的一个主题,因此彼此相关。谢谢。 – pymat

+0

我不同意。我在一个问题中看到了6个具体的问题。这是在这里主题的简要! – jkalden

长话短说:现在降级到Python 3.5,Python 3.6的二进制文件将与下一个cx_Oracle版本一起构建。


龙版本:

在脚本中,我有print (sys.version)这给:3.6.0 [...]

我发现:

cx_Oracle-5.2.1-12c.win-amd64-py3.5.exe (md5) 
cx_Oracle-5.2.1-12c.win32-py3.5.exe (md5) 

这些安装的Python 3.5(请参阅py3.5的名称)。二进制Python模块在主要Python版本之间不一定是API兼容的,这就是它们的文件名是特定于版本的原因。

对于Python 3.6还没有官方的cx_Oracle二进制文件。一旦cx_Oracle 5.3 is released, it will include Windows installers for Python 3.6 as well (issue #45)

There won't be official Python 3.6 installers for current cx_Oracle version 5.2.1 (see issue #50)

同时,according to Jani Tiainen from the mailing lists, it shouldn't be difficult to build the binaries yourself - 但我从来没有尝试过这个自己:

我想你只需要从微软 C++ 14(2015)[1],并即时客户端库从Oracle [下载Visual 2]。那么你应该可以自己编译它 。

请注意,您还需要SDK库以及Instant Client。

[1] http://landinghub.visualstudio.com/visual-cpp-build-tools

[2] http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

+2

也不要使用Anaconda,请使用https://www.python.org/中的官方Python(cx_Oracle二进制文件是针对官方Python构建的,可能根本不适用于Anacoda) – jtiai

谢谢你,我现在beleive对我的方式。我安装了Visuakl C++,降级Python版本有所帮助,但还有一些问题。

  1. 使用pip install cx_Oracle最初给:

    要求已经满足:cx_Oracle在C:\用户\ Pymat \应用程序数据\本地\程序\ python的\ python35 \ LIB \站点包

然而

在我的脚本中使用下列内容后,问题消失:

os.chdir("C:\\Oracle\\instantclient_12_1") 
import cx_Oracle 

邻最小的问题是进口被红色强调,尽管它现在工作。

  1. 我在脚本中使用:

    打印( “Python版本:” + platform.python_version()) 打印( “cx_Oracle版本:” + cx_Oracle.version ) print(“Oracle client:”+ str(cx_Oracle.clientversion())。replace(',','。')) print(“Oracle DB版本:”+ connection.version) print编码:“+ connection.encoding)

  2. 产生于:

    Python version: 3.5.3 
    cx_Oracle version: 5.2.1 
    Oracle client: (12.1.0.2.0) 
    Oracle DB version: 12.1.0.2.0 
    Oracle client encoding: US-ASCII 
    

    此外,我最后卸载了anaconda。我可能需要Anaconda的一些库,所以不确定是否在未来重新安装和使用Python可能会有所帮助。目前,它没有它的工作。

开始=>