• RobotFramwork中实现oracle数据库的连接(终于解决cx_oracle问题)


     RobotFramework连接数据库java实现,也有python实现的,现在研究的python实现的,java还没尝试。有兴趣的参考后面的转载文章
      
       步骤(也转载了别人的文章,因为写的比较全,就不另外加工了):

         任何一个Robot FrameworkLibrary基本上都是一个双层结构:外层的皮,实现标准接口供Robot  Framework调用;里面的瓤,实现具体的功能,提供API供外层的皮进行封装。

      DataBaseLibrary也不例外,你从它的主页Download标签处下载的只是一个皮。

      为了使它能够真正工作,你还得下载一个瓤---------一个符合Python数据库接口规范的库文件。

      两部分缺一不可。

      安装介绍

      前提是你已经安装好了Robot Framework环境。

      1.先下载安装瓤,我们从这个主页能够找到所有支持Python数据库规范的实现:

      http://wiki.python.org/moin/DatabaseInterfaces

      由于要连接Oracle,我这里要进入Oracle的支持页面

      http://wiki.python.org/moin/Oracle

      选择第二个cx_oracle的主页,进入下载列表

      选择合适的版本下载并安装。我选择的是Windowsx86 Installer (Oracle 11g, Python 2.7)

    (此处说明,我下载的是cx_Oracle-5.1.2-11g.win32-py2.7.msi,下载后直接双击安装就可以了)(注意:cx_oracle要和oracle client版本以及PYTHON版本一致)

      安装好了以后你的pythonLibsite-packages下多了一个cx_Oracle.pyd文件,这个目录下同时也多了个文件夹

      ccx_Oracle-5.1.2-py2.7.egg-infocx_oralce的使用文档就在里边。

          

    说明,看看我安装后的效果

      2.再下载安装皮,我们从这个地方下载DatabaseLibrary的皮,这是个压缩文件。

      http://github.com/franz-see/Robotframework-Database-Library/tarball/master

      下载解压后,在命令行进入解压目录,执行setup.py install

      安装好了以后DatabaseLibrary这个目录也被安装到了site-package目录下。

    (说明,安装后的效果图:见上面的图,里面有个DatabaseLibrary文件夹)

    安装就算完成了。

    OK:到这里还没完,后面就是我苦逼了2天,百度、google了几百遍,终于瞎猫碰到死老鼠解决问题的方法:
    感谢这个博客:http://blog.csdn.net/zhangweiwindow/article/details/6575224
    为了防止后续这个链接无法访问,我还是把博客内容转载过来吧

       “今天重装了一下系统,所以以前工作时配置的python程序也需要重新配置一下。但是在装完cx_Oracle运行程序时出现了“ Unable to acquire Oracle environment handle”错误,百思不得其解,以前是可以配置成功的啊,但这次是怎么了。

    以下是环境变量的配置:

      PATH=G:app dproduct11.2.0client_1;

      NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

      TNS_ADMIN=G:app*product11.2.0client_1 etworkadmin;(注意此处的位置是tnsnames.ora的位置,悲催,就是这个位置写错了,导致我后面写脚本链接的字符串怎么看都没问题,就是跑不起来~)

    以上配置按道理来说是没有问题的,可问题出在哪呢?查来查去,终于找到了问题所在: 

    在出现这个问题之前,还出现了一个问题:“Dll load failed”,因为当前配置环境变量没能解决此总是,所以干脆就把oci.dll文件拷到site-package目录中了,因为没有拷贝 oraociei10.dll和oraocci10.dll,所以出现了“ Unable to acquire Oracle environment handle”错误。

    以后此问题的解决办法:

        第一种:配置好环境变量,不把oracle相关的dll文件放到site-package中

        第二种:拷贝oci.dll, oraociei10.dll, oraocci10.dll到site-package中”

    说明:如果拷贝这3个dll还是不行,尝试把instantclient里面的所有dll都拷贝到site-package里面再试试,如果还是不行,就要再看网络上提供的一些其他办法了。

    中间还尝试过JayDeBeApi 0.1.3,安装参考如下链接

    https://pypi.python.org/pypi/JayDeBeApi/

     使用:

    *** Settings ***
    Library DatabaseLibrary

    *** Test Cases ***
    testdbpybot
    #pybot
    Connect To Database Using Custom Params  cx_Oracle    'username','password','test35'     #连接字符串可以是sid或者service name或则host/db name,*.*.10.22:1521/pss3
    @{rs}                                                           query          select * from *_*_content
    Log many @{rs}
    Disconnect from Database
    此处连接串对应的tnsnames.ora是:

    TEST35 =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.10.22)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = pss3)
    )
    )

  • 相关阅读:
    策略模式
    模板方法模式

    kafka
    Linux下部署MongoDB
    Linux下安装ssdb
    ssdb常用知识点
    Eclipse 的 Java Web 项目环境搭建
    PLSQL连接Oracle
    redis书籍
  • 原文地址:https://www.cnblogs.com/glre09/p/3489101.html
Copyright © 2020-2023  润新知