(一)说明
本文说明在jmeter中如何通过jython连接Oracle数据库。
因为python cx_oracle库底层是用C实现的,在jython中用不了,这里用纯Java实现的zxJDBC。
zxJDBC 符合 Python DB API 规范。
zxJDBC已经整合到jython中,所以不需要另外安装。
说明文档:http://web.mit.edu/jython/jythonRelease_2_2alpha1/Doc/zxjdbc.html
(二)通过zxJDBC连接Oracle数据
自己电脑没装Oracle数据库,就不截运行成功的图了,不过在公司内网是验证过没问题的。
这里要注意2点:
1、要设置默认编码格式,不然会报错
2、字典DADABASE中NAME指的是INSTANCE_NAME,数据库中用下面的SQL查询可以得到
SELECT INSTANCE_NAME FROM v$instance
代码语言:javascript复制 1 import sys
2 sys.path.append('C:UserslaiquAppDataLocalProgramsPythonPython27Lib')
3 sys.path.append('C:UserslaiquAppDataLocalProgramsPythonPython27Libsite-packages')
4 reload(sys)
5 sys.setdefaultencoding('utf8') #设置默认编码方式
6 from com.ziclix.python.sql import zxJDBC
7
8 DADABASE = {
9 'NAME': 'XXXX', # 数据库实例名
10 'USER': 'XXX', # 用户名
11 'PASSWORD': 'XX', # 密码
12 'HOST': 'XX', # 服务器ID(或域名)
13 'PORT': 'XXX', # 端口号
14
15 }
16
17 def select(query_sql):
18 driver = "oracle.jdbc.driver.OracleDriver"
19 url = "jdbc:oracle:thin:@{}:{}:{}".format(DADABASE["HOST"],DADABASE["PORT"],DADABASE["NAME"])
20 conn = zxJDBC.connect(url , DADABASE["USER"] , DADABASE["PASSWORD"] , driver)
21 cur = conn.cursor()
22 cur.execute(query_sql)
23 data = cur.fetchall()
24 conn.close()
25 return data
26
27 data = select(query_sql="select * from XXX where rownum < 3")