jaydebeapi可以连接_使用jaydebeapi同时连接两个不同数据库(oracle+mysql)的问题

在尝试使用JayDeBeApi连接Oracle和MySQL两个数据库时,遇到'No suitable driver found for jdbc:mysql...'错误。问题源于_JavaGateway实例在第一次连接后被缓存,导致第二次连接不同数据库时使用了错误的驱动。解决方案是关闭已运行的_JavaGateway并在每次连接前重新创建。修改后的connect方法在连接前关闭gateway,避免了资源浪费但可能影响性能。
摘要由CSDN通过智能技术生成

在使用jaydebeapi只连接一种数据库时,是没问题的,但是如果需要同时连接两种数据库,不然同时连接oracle和mysql

例如以下测试代码:

import jaydebeapi ##使用jdbc驱动连接数据库

import pandas as pd

dirver='oracle.jdbc.driver.OracleDriver'

jarFile='D:\\WORK\\PYScript\\BiDataMonitor\\jdbc\\64\\ojdbc14.jar'

addr_='xxx.xxx.xxx.xxx'+':'+'1521'+'/'+'xxx'

url='jdbc:oracle:thin:@'+addr_

print('url',url)

DBUser='用户名'

DBPwd='密码'

conn=jaydebeapi.connect(dirver,[url,DBUser,DBPwd],jarFile) ##使用jdbc驱动连接数据库

sql_str="select 'oracle' from dual"

df=pd.read_sql_query(sql_str,conn)

print(df)

conn.close()

dirver='com.mysql.jdbc.Driver'

jarFile='D:\\WORK\\PYScript\\BiDataMonitor\\jdbc\\64\\mysql-connector-java-5.1.30.jar'

addr_='xxx.xxx.xxx.xxx'+':'+'3306'+'/'+'xxx'

url='jdbc:mysql://'+addr_

print('url',url)

DBUserMySql='用户名'

DBPwdMySql='密码'

conn2=jaydebeapi.connect(dirver,[url,DBUserMySql,DBPwdMySql],jarFile)

sql_str="select 'mysql' from dual"

df=pd.read_sql_query(sql_str,conn2)

print(df)

conn2.close()

在连接第二种数据库时,就会报错误:

Py4JJavaError: An error occurred while calling z:java.sql.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值