如何在没有安装任何客户端的情况下从 Robot Framework 连接 Oracle 数据库
How to connect Oracle database from Robot Framework without any client installed
大多数解决方案都需要安装一些客户端或 cx_Oracle 使用的模块也不适用 - 因为我必须使用机器人框架的 Jython 版本
为了找到一个非常简单的解决方案,我研究了很多帖子:
通过
安装DatabaseLibrary模块
pip install robotframework-databaselibrary
通过
安装JayDeBeApi模块
pip install JayDeBeApi
- 现在您可以将这些库放在任何您喜欢的地方 - 只需从 Python\Lib\site-packages
复制它们
这就是诀窍!
DatabaseLibrary 用法有以下 jaydebeapi 连接示例:
Connect To Database Using Custom Params | JayDeBeApi | 'oracle.jdbc.driver.OracleDriver', 'my_db_test', 'system', 's3cr3t'
然而这是错误的!您必须在 username-pass 对上使用方括号!像这样:
Connect To Database Using Custom Params | JayDeBeApi | 'oracle.jdbc.driver.OracleDriver', 'my_db_test', ['system', 's3cr3t']
并且请不要忘记使用 URL 连接而不是 my_db_test!应该是这样的:
jdbc:oracle:thin:@//127.0.0.1:1521/my_db_test
希望对大家有所帮助!祝你好运!
如果您使用带有 Java 的机器人框架,那么机器人官方网站上有单独的库:http://robotframework.org/#libraries
名称为 数据库(Java)
下载此库并将其放入lib文件夹
下载oracle需要的驱动,放入lib文件夹
在您的文件中定义以下变量
${ORACLE DATABASE URL} jdbc:oracle:thin:@${DATABASE_IP}:1521:${ORACLE_SYSTEM_ID}
${ORACLE DATABASE USER} ${DATABASE_NAME}
${ORACLE DATABASE PASSWORD} PASSWORD
${ORACLE DATABASE DRIVER} oracle.jdbc.driver.OracleDriver
使用下面的关键字连接到数据库
Connect To Database ${ORACLE DATABASE DRIVER} ${ORACLE DATABASE URL} ${ORACLE DATABASE USER} ${ORACLE DATABASE PASSWORD}
我安装了 Library DatabaseLibrary 和 jaydebeapi,但在代码中它无法识别 JaydeBeApi,因此无法正常工作。
这就是我解决问题的方法。
我必须从 http://aka.ms/vcpython27 安装 Microsoft Visual C++ 9.0 然后我按照这个步骤
- 打开命令window(开始 -> cmd)
- git 克隆 https://github.com/oracle/python-cx_oracle.git cx_Oracle
- cd cx_Oracle
- git 子模块初始化
- git 子模块更新
- pip 安装cx_Oracle
- pip 安装机器人框架-数据库库
- pip install JayDeBeApi(可能对某些人有用)
*** Settings ***
Documentation Basic database related keywords
Library DatabaseLibrary
*** Variables ***
${DB_CONNECT_STRING} = 'user/mypasswd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myipaddress)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mysid)))'
*** Test Cases ***
Connecting
connect
@{queryResults} Query select * from table t where id_table =1001
log to console @{queryResults}
*** Keywords ***
Connect
connect to database using custom params cx_Oracle ${DB_CONNECT_STRING}
Disconnect
disconnect from database
大多数解决方案都需要安装一些客户端或 cx_Oracle 使用的模块也不适用 - 因为我必须使用机器人框架的 Jython 版本
为了找到一个非常简单的解决方案,我研究了很多帖子:
通过
安装DatabaseLibrary模块pip install robotframework-databaselibrary
通过
安装JayDeBeApi模块pip install JayDeBeApi
- 现在您可以将这些库放在任何您喜欢的地方 - 只需从 Python\Lib\site-packages 复制它们
这就是诀窍! DatabaseLibrary 用法有以下 jaydebeapi 连接示例:
Connect To Database Using Custom Params | JayDeBeApi | 'oracle.jdbc.driver.OracleDriver', 'my_db_test', 'system', 's3cr3t'
然而这是错误的!您必须在 username-pass 对上使用方括号!像这样:
Connect To Database Using Custom Params | JayDeBeApi | 'oracle.jdbc.driver.OracleDriver', 'my_db_test', ['system', 's3cr3t']
并且请不要忘记使用 URL 连接而不是 my_db_test!应该是这样的:
jdbc:oracle:thin:@//127.0.0.1:1521/my_db_test
希望对大家有所帮助!祝你好运!
如果您使用带有 Java 的机器人框架,那么机器人官方网站上有单独的库:http://robotframework.org/#libraries 名称为 数据库(Java)
下载此库并将其放入lib文件夹
下载oracle需要的驱动,放入lib文件夹
在您的文件中定义以下变量
${ORACLE DATABASE URL} jdbc:oracle:thin:@${DATABASE_IP}:1521:${ORACLE_SYSTEM_ID}
${ORACLE DATABASE USER} ${DATABASE_NAME}
${ORACLE DATABASE PASSWORD} PASSWORD
${ORACLE DATABASE DRIVER} oracle.jdbc.driver.OracleDriver
使用下面的关键字连接到数据库
Connect To Database ${ORACLE DATABASE DRIVER} ${ORACLE DATABASE URL} ${ORACLE DATABASE USER} ${ORACLE DATABASE PASSWORD}
我安装了 Library DatabaseLibrary 和 jaydebeapi,但在代码中它无法识别 JaydeBeApi,因此无法正常工作。
这就是我解决问题的方法。
我必须从 http://aka.ms/vcpython27 安装 Microsoft Visual C++ 9.0 然后我按照这个步骤
- 打开命令window(开始 -> cmd)
- git 克隆 https://github.com/oracle/python-cx_oracle.git cx_Oracle
- cd cx_Oracle
- git 子模块初始化
- git 子模块更新
- pip 安装cx_Oracle
- pip 安装机器人框架-数据库库
- pip install JayDeBeApi(可能对某些人有用)
*** Settings *** Documentation Basic database related keywords Library DatabaseLibrary *** Variables *** ${DB_CONNECT_STRING} = 'user/mypasswd@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myipaddress)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=mysid)))' *** Test Cases *** Connecting connect @{queryResults} Query select * from table t where id_table =1001 log to console @{queryResults} *** Keywords *** Connect connect to database using custom params cx_Oracle ${DB_CONNECT_STRING} Disconnect disconnect from database