(一)说明
本文说明在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
1 import sys 2 sys.path.append(‘C:\Users\laiqu\AppData\Local\Programs\Python\Python27\Lib‘) 3 sys.path.append(‘C:\Users\laiqu\AppData\Local\Programs\Python\Python27\Lib\site-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")