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

前端之家收集整理的这篇文章主要介绍了安装cx_Oracle模块步骤以及出现问题解决,还有中文乱码情况前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

电脑: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 installer 3.5
但是import cx_Oracle

会出现错误

  1. Traceback (most recent call last):
  2. File"<stdin>",line1,in<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. importos
  2. os.environ['NLS_LANG']='SIMPLIFIEDCHINESE_CHINA.UTF8'

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

   
   
  • #-*-coding:utf-8-*-
  • 例子:

    #-*-coding:utf-8-*-
       
       
  • importos
  • os.environ['NLS_LANG']='SIMPLIFIEDCHINESE_CHINA.UTF8'
  • importcx_Oracle
  • db=cx_Oracle.connect(username/passwd@192.168.2.222:42401/xezf')
  • cursor=db.cursor()
  • rs=cursor.execute('select*fromcfg_haoduan_ghwhererownum<9')
  • li=rs.fetchall()
  • printli[0][3].decode('utf-8')
  • cursor.execute('insertintotest_cccvalues(1,sysdate,\'北\')')
  • db.commit()
  • db.close()
  • 原文地址:http://jun-zhou.iteye.com/blog/953073

    原文链接:https://www.f2er.com/oracle/212983.html

    猜你在找的Oracle相关文章