安装cx_Oracle模块步骤以及出现问题解决,还有中文乱码情况

来源:互联网 发布:乐高机器人ev3编程 编辑:程序博客网 时间:2024/05/18 00:01

首先介绍一下自己的配置:

电脑:win7 64位

python: 3.5版本  64位

Oracle client 用的PLSQL Developer  (11.2.0.1.0 - 64位)

下载了cx_Oracle   https://pypi.python.org/pypi/cx_Oracle/5.2.1

选择了下面版本

cx_Oracle-5.2.1-11g.win-amd64-py3.5.exe (md5)MS Windows installer3.5但是import cx_Oracle

会出现错误:

  1. Traceback (most recent call last): 
  2.   File "<stdin>", line1in <module> 
  3. ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。 

这是需要下载一个64位的oci.dll ,然后拷贝到python 中的lib/site-packages下

下载地址:

oci.dll下载地址(脚本之家):http://www.jb51.net/dll/oci.dll.html#down

下载完成解压,选取其中的64位中的oci.dll复制到site-packages目录下即可。
但是可能还会出现问题,
Unable to acquire Oracle environment handle,这时需要下载oraocci11.dll,
复制 oci.dll 依赖的 oraociei11.dll,这时将ocijdbc11.dll 到 \Python27\Lib\site-packages 目录下。如果不清楚就将 instantclient_11_2 目录下的 dll 都复制到 \Python27\Lib\site-packages 目录下
这时就OK啦
再试试import cx_Oracle
就不会出错。
然后连接db=cx_Oracle.connect('user_name/pass@数据库所在服务器ip地址:1521/SERVICE_NAME')
例如我的 db = cx_Oracle.connect('ccdm_bit/12345@10.2.3.666:1521/bitbizbd')
如果不知道service_name是多少,则进入Oracle client 中如我的路径:D:\oracle\product\10.2.0\client_1\NETWORK,下的文件TNSNAMES.ORA,用编辑器打开,查看就能看到。哈哈,好了,我也是折腾了好久,终于连上数据库了!



特别注意:根据自己的版本选择
参考博客:http://blog.csdn.net/jianhong1990/article/details/8781989

 

在使用cx_oracle模块读取Oracle数据库中的中文记录时,返回值皆为?号,后google得此佳文,遂问题得以解决,特于此记之。

======================================================================

oracle数据库版本是10g,字符集是AL32UTF8.
编写的python脚本中需要加入如下几句:

  1. import os 
  2. os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 

这样可以保证select出来的中文显示没有问题。
要能够正常的insert和update中文,还需要指定python源文件的字符集密码和oracle一致。

  1. # -*- coding: utf-8 -*- 

例子:

  1. # -*- coding: utf-8 -*- 
  2.  
  3. import os 
  4. os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' 
  5.  
  6. import cx_Oracle 
  7. db = cx_Oracle.connect(username/passwd@192.168.2.222:42401/xezf') 
  8. cursor = db.cursor() 
  9. rs = cursor.execute('select * from cfg_haoduan_gh where rownum<9'
  10. li =rs.fetchall() 
  11. print li[0][3].decode('utf-8'
  12.  
  13. cursor.execute('insert into test_ccc values(1,sysdate,\'北\')'
  14.  
  15. db.commit() 
  16. db.close()  

原文地址:http://jun-zhou.iteye.com/blog/953073


1 0
原创粉丝点击