Python安装jpype调用java,安装jaydebeapi通过jdbc连接数据库

pip install JPype1或下载JPype1-0.7.0.tar.gz包

经常出现需要安装VC++服务等

测试代码如下:
 1 # Author: zfh
 2 import jpype,os,time,timer
 3 from jpype import java
 4 from jpype import javax
 5 
 6 HOST='192.168.48.103'
 7 PORT=9999
 8 USER=''
 9 PASS=''
10 
11 URL = "service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi" % (HOST, PORT)
12 print('URL-->',URL)
13 jvmPath = jpype.getDefaultJVMPath()
14 print('jvmPath-->',jvmPath)
15 #this it the path of your libjvm /usr/lib/jvm/sun-jdk-1.6/jre/lib/amd64/server/libjvm.so on linux
16 # jpype.startJVM("C:\Program Files\Java\jre1.8.0_191\bin\server\jvm.dll")
17 if not jpype.isJVMStarted():
18     jpype.startJVM(jvmPath)
19 jpype.java.lang.System.out.println('Hello world!')
20 # print(jpype.startJVM("C:\Program Files\Java\jre1.8.0_191\bin\server\jvm.dll"))
21 jhash  = java.util.HashMap()
22 jarray = jpype.JArray(java.lang.String)([USER,PASS])
23 jhash.put(javax.management.remote.JMXConnector.CREDENTIALS, jarray);
24 jmxurl = javax.management.remote.JMXServiceURL(URL)
25 jmxsoc = javax.management.remote.JMXConnectorFactory.connect(jmxurl,jhash)
26 try:
27     connection = jmxsoc.getMBeanServerConnection();
28 except Exception as e:
29     print(e)
30 print('connection-->',connection)
31 #
32 #
33 while True:
34     time.sleep(60)
35     object="java.lang:type=Threading"
36     attribute="ThreadCount"
37     attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
38     print('ThreadCount-->',attribute, attr)
39     #
40     #Memory is a special case the answer is a Treemap in a CompositeDataSupport
41     object="java.lang:type=Memory"
42     attribute="HeapMemoryUsage"
43     attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
44     print('HeapMemoryUsage-->',attr.contents.get("used"))
45     #ceshi
46     object="kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec"
47     attribute="Count"
48     attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
49     print('Count-->',attribute,attr)
50 
51     object="java.lang:type=OperatingSystem"
52     attribute="Version"
53     attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
54     print('Version-->',attribute,attr)
55 
56     object="kafka.server:type=ReplicaManager,name=PartitionCount"
57     attribute="Value"
58     attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
59     print('Value-->',attribute,attr)
运行结果如下:(记录一下jvmPath)
1 URL--> service:jmx:rmi:///jndi/rmi://192.168.48.103:9999/jmxrmi
2 jvmPath--> C:\Program Files\Java\jre1.8.0_211\bin\server\jvm.dll
3 Hello world!
4 connection--> javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection@531d72ca
5 ThreadCount--> ThreadCount 60
6 HeapMemoryUsage--> 156563848
7 Count--> Count 0
8 Version--> Version 2.6.32-431.el6.x86_64
9 Value--> Value 24

 

安装pip install JayDeBeApi 或下载JayDeBeApi-1.1.1.tar.gz(安装JayDeBeApi依赖JPype1)

# Author: zfh
import jaydebeapi
url = 'jdbc:oracle:thin:@192.168.48.102:1521/orcl'
user = 'scott'
password = 'scott'
dirver = 'oracle.jdbc.driver.OracleDriver'
jarFile = 'D:\Program Files (x86)\Python\ojdbc6.jar'
sqlStr = 'select * from emp'
# conn=jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:@127.0.0.1:1521/orcl',['hwf_model','hwf_model'],'E:/pycharm/lib/ojdbc14.jar')
conn = jaydebeapi.connect(dirver, url, [user, password], jarFile)
curs = conn.cursor()
curs.execute(sqlStr)
result = curs.fetchall()
for row in result:
    print(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7])
curs.close()
conn.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `jpype` 调用 Java 包需要先安装 `jpype` 库,可以使用 `pip` 命令进行安装: ``` pip install jpype1 ``` 然后,可以按照以下步骤使用 `jpype` 调用 Java 包并传参: 1. 首先,需要启动 JVM 进程,可以使用 `jpype.startJVM()` 函数来启动: ```python import jpype jpype.startJVM() ``` 2. 导入 Java 类: ```python java_class = jpype.JClass('com.example.MyClass') ``` 其中,`com.example.MyClass` 是要调用Java 类的全限定名。 3. 创建 Java 对象: ```python java_object = java_class() ``` 4. 调用 Java 方法: ```python result = java_object.myMethod('param1', 'param2') ``` 其中,`myMethod` 是要调用Java 方法名,`'param1'`、`'param2'` 是传递给 Java 方法的参数。 5. 关闭 JVM: ```python jpype.shutdownJVM() ``` 完整示例代码如下: ```python import jpype # 启动 JVM jpype.startJVM() # 导入 Javajava_class = jpype.JClass('com.example.MyClass') # 创建 Java 对象 java_object = java_class() # 调用 Java 方法 result = java_object.myMethod('param1', 'param2') # 关闭 JVM jpype.shutdownJVM() ``` 注意,如果 Java 类需要传递复杂类型的参数,需要先将 Python 对象转换为 Java 对象。可以使用 `jpype.java` 模块中的函数进行转换,例如: ```python import jpype # 启动 JVM jpype.startJVM() # 导入 Javajava_class = jpype.JClass('com.example.MyClass') # 创建 Java 对象 java_object = java_class() # 转换 Python 对象为 Java 对象 param1 = jpype.java.lang.String('hello') param2 = jpype.JArray(jpype.JInt)([1, 2, 3]) # 调用 Java 方法 result = java_object.myMethod(param1, param2) # 关闭 JVM jpype.shutdownJVM() ``` 在上面的示例中,`jpype.java.lang.String` 将 Python 字符串转换为 Java 字符串,`jpype.JArray` 将 Python 列表转换为 Java 数组。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值