DBeaver连接国产数据库OceanBase,以及Python连接,解决ModuleNotFoundError: No module named '_jpype'
DBeaver连接OceanBase
参考:https://www.modb.pro/db/365929
用户名的格式为: 数据库用户名@租户名#集群名
Python连接OceanBase
参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033288
pip3 install JayDeBeApi
会自动下载JayDeBeApi和JPype1两个包,其中JPype1是根据当前环境的Python版本自动匹配的,如下图下载的JPype1-1.4.1-cp311-cp311-win_amd64.whl,是Python3.11版本的
Python版本和JPype1包的版本必须对应起来,不能通过pip安装不同版本的JPype1包,比如下面:
卸载了JPype1,Python3.11.5安装3.9的包失败
如果用拷贝的方法,把3.11的JPype1拷贝到3.9的site-packages目录下,会导致Python3.9 import _jpype模块找不到,如图:
ModuleNotFoundError: No module named '_jpype'
离线安装方法:
在官网下载对应版本包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
比如本机的Python版本是3.9,就下载如下的cp39版本
复制安装包到:Python安装目录\Lib\site-packages目录下
在Windows命令行模式下在线安装wheel,即 pip install wheel
安装完wheel后,再安装JPype1-0.6.3-cp37-cp37m-win_amd64.whl 安装包(注意要加上路径)
Python连接代码
参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033288
import jaydebeapi
def ob_test():
url = 'jdbc:oceanbase://**.*.**.**:****/***'
user = '**@**#**' # 用户@租户#集群名称
password = '******'
driver = 'com.alipay.oceanbase.jdbc.Driver' # 类路径,无需更改
jarFile = 'oceanbase-client-1.1.7.jar' # jar文件和py文件在同一个文件夹下,这里需要用相对路径,绝对路径找不到
conn = jaydebeapi.connect(driver, url, [user, password], jarFile)
cur = conn.cursor()
# 查询 cities 表中的所有数据
sql = "select * from table"
cur.execute(sql)
ans = cur.fetchall()
print(ans)
cur.close()
conn.close()