在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)]
我已经提到的指令从here和here和here和here和here。
问题1:哪一个是cx_Oracle
的正确下载? 我去cx_Oracle 5.2.1
从here 和下载:
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新手,我认为这个安装过程可能会更容易。欢迎任何建议。
长话短说:现在降级到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
也不要使用Anaconda,请使用https://www.python.org/中的官方Python(cx_Oracle二进制文件是针对官方Python构建的,可能根本不适用于Anacoda) – jtiai
谢谢你,我现在beleive对我的方式。我安装了Visuakl C++,降级Python版本有所帮助,但还有一些问题。
-
使用
pip install cx_Oracle
最初给:要求已经满足:cx_Oracle在C:\用户\ Pymat \应用程序数据\本地\程序\ python的\ python35 \ LIB \站点包
在我的脚本中使用下列内容后,问题消失:
os.chdir("C:\\Oracle\\instantclient_12_1")
import cx_Oracle
邻最小的问题是进口被红色强调,尽管它现在工作。
-
我在脚本中使用:
打印( “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)
产生于:
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可能会有所帮助。目前,它没有它的工作。
嗨!有趣的话题!问题列表在这里没有多大意义!请分开您的问题,以便回答这些问题!另见[问]!谢谢! – jkalden
嗨,我已经分开了问题。其中有六个,涉及安装问题的一个主题,因此彼此相关。谢谢。 – pymat
我不同意。我在一个问题中看到了6个具体的问题。这是在这里主题的简要! – jkalden