robot framework-databaselibaray库使用(python)(转)

  公司做项目用到了databaselibaray,刚开始使用时碰到了很多问题,网上也查阅了很多资料终于是可以用了,现在整理记录下来,有需要的同学可随意使用:

另,本文主要是databaselibaray的使用,RF环境搭建可以看我另一篇:robot framework环境搭建

1、databaselibaray环境准备:

  a)     安装cx_Oracle: http://sourceforge.net/projects/cx-oracle/files/

  b)     安装DBlibrary: https://github.com/franz-see/Robotframework-Database-Library

  c)     安装oracle(以下两个选一个即可):

                 i.          安装oracle客户端:http://www.oracle.com/

                ii.          安装instant client: http://www.oracle.com/technology/global/cn/software/tech/oci/instantclient/index.html

 

注意:cx_Oracle的版本要与oracle的版本一致

 

二、使用DBLibrary 

robot framework-databaselibaray库使用(python)(转)
    Connect To Database Using Custom Params    cx_Oracle    'scott','tiger','oral'
    @{data}    query    select * from dept
    log many    @{data}
    log    ${data[0][1]}
    ${row}    row count    select * from dept
    log    ${row}
    ${count}    Get length    ${data}
    log    ${count}
    Execute Sql String      delete from dept d where d.id='1'
    Disconnect From Database
robot framework-databaselibaray库使用(python)(转)

说明:

1、 Connect To Database Using Custom Params:

  a)     第一个参数我使用的是cx_Oracle,就写这个

  b)     第二个参数由三部分组成:user,pwd,tns

2、关于tns多说两句:我安装的是oracle客户端,可以在oracle安装目录\network\admin\tnsnames.ora中配置你的TNS,我的如下:

  • oral=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.10)(PORT = 1526)) (connect_data = (sid =oral)))

因为我的tnsnames.ora文件配置了tns所以使用时可以直接使用它的sid即oral。如果没有配置的话,直接使用(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.10)(PORT = 1526)) (connect_data = (sid =oral)))代替上面例子中的oral也是可以的。

 

三、遇到的阻碍问题及解决办法:

在家里使用DBLibrary时没有任何问题,但是到公司用时出问题了,主要有以下两个问题,折腾了好久:

  1、 ImportError: DLL load failed:这个问题把oci.dll拷贝到python的Lib\site-packages目录下就可以解决。

  2、 InterfaceError: Unable to acquire Oracle environment handle:这个问题需要拷贝另外两个dll: oraocci11.dll和oraociei11.dll

 

 

参考:

http://www.51testing.com/html/15/246015-853524.html

http://blog.sina.com.cn/s/blog_654c6ec70100u9fr.html

http://www.cnblogs.com/puresoul/p/3868638.html

上一篇:python POST发送多个段(如json消息+文件)


下一篇:利用Arcgis for javascript API绘制GeoJSON并同时弹出多个Popup