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

时间:2017-02-23 09:25:20

标签: python oracle cx-oracle

我一直试图安装和设置,尽管有几个链接描述了如何执行此操作,但我还是没有让它工作。我先描述一下设置:

  • 我的电脑:Windows 8.1企业版(62位)
  • 远程服务器:Oracle DB Version 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)]

我一直在提及herehere以及herehere以及here的说明。

问题1: cx_Oracle的正确下载是哪个? 我从here前往cx_Oracle 5.2.1 并下载:

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,例如cx_Oracle。我怀疑找到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; 模块存在问题。另见问题5

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

(i)当我在Windows中使用GUI检查here之类的变量时,我看到:

ORACLE_HOME

注意: C:\Users\Pymat>echo %PATH%末尾缺少分号。这是对的吗?

(ii)当我在Command中使用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; 时:

sys.path

(iii)当我进入Python shell并使用'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'

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

问题4:即时客户端下载,下载实际上是必不可少的?

在Oracle注册后,我从版本12.1.0.2下的here下载" Instant Client Package - Basic" " Instant客户端包 - SDK" 。有些网站没有提及SDK包,但无论如何我都下载了它。

将这些内容下载到我的PC(而不是Oracle DB所在的位置)。

问题5:为了测试安装是否成功,我进入Python shell并使用:

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

但后来我得到了:

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

为什么这一步不起作用?

问题6:我无法在Eclipse中正确使用Console,但Command中的Python shell有效,为什么?

当我点击&#34; PyDev控制台&#34; ,然后&#34; Python控制台&#34; 时,我得到:

body

这变得有点头疼,虽然我仍然是Python新手,但我认为这个安装过程可能会轻松得多。欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

长话短说:目前已降级为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)

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 - 但我自己从未尝试过这个:

  

我认为您只需要从Microsoft下载Visual C ++ 14(2015)   [1]和Oracle的Instant Client库[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

答案 1 :(得分:0)

谢谢你,我现在在路上相信了。我安装了Visuakl C ++,降级Python版本有所帮助,但还有一些问题。

  1. 最初使用for /f给出了:

    要求已经满足:cx_Oracle在c:\ users \ Pymat \ appdata \ local \ programs \ python \ python35 \ lib \ site-packages

  2. 然而,在我的脚本中使用以下内容后,问题就消失了:

    pip install cx_Oracle

    唯一的小问题是,尽管现在正在运作,导入仍以红色标出。

    1. 我在我的剧本中使用:

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

    2. 导致:

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

      还有一点,我最后安装了anaconda。我可能需要Anaconda中的一些库,所以不确定在将来重新安装和使用Python可能会有所帮助。现在,它没有它。