在 Windows 上使用 Python 连接 OceanBase 数据库,主要取决于你的 OceanBase 租户模式。OceanBase 支持 MySQL 模式和 Oracle 模式,连接方式有所不同。对于MySQL 模式,可以直接使用 Python 原生的 MySQL 驱动PyMySQL,如果是Oracle 模式,Python 没有原生的直接驱动。你需要通过 JDBC 桥接的方式,使用 jaydebeapi 库来连接。
前面一篇我最近在做Python到各国产库的测试,这篇记录一下oceanbase oracle租户的连接方式
第一步,安装java JDK
确保你的 Windows 电脑已安装 JDK 8 或更高版本,并配置好环境变量。
第二步,下载OceanBase JDBC 驱动
从官方下载,地址https://www.oceanbase.com/softwarecenter-cloud,下载OceanBase JDBC 驱动程序。
第三步,安装jaydebeapi
因为是连网的Windows, 我直接使用在线模式,pip安装
D:\code\oracle-compatibility-tool\testcase>pip install jaydebeapi
Defaulting to user installation because normal site-packages is not writeable
Collecting jaydebeapi
Downloading JayDeBeApi-1.2.3-py3-none-any.whl.metadata (10 kB)
Collecting JPype1 (from jaydebeapi)
Downloading jpype1-1.6.0-cp312-cp312-win_amd64.whl.metadata (5.1 kB)
Requirement already satisfied: packaging in C:\Users\weejar\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages (from JPype1->jaydebeapi) (26.0)
Downloading JayDeBeApi-1.2.3-py3-none-any.whl (26 kB)
Downloading jpype1-1.6.0-cp312-cp312-win_amd64.whl (355 kB)
Installing collected packages: JPype1, jaydebeapi
Successfully installed JPype1-1.6.0 jaydebeapi-1.2.3
jaydebeapi依赖jpype1,所以自动安装了,离线的话要分别安装。
测试案例
import jaydebeapi
# 配置连接参数
url = 'jdbc:oceanbase://172.xx.xx.213:2883'
# 用户名@租户名#集群名
user = 'anbob@orcl#test'
password = 'anbob'
# 驱动类路径,通常不需要更改
driver = 'com.alipay.oceanbase.jdbc.Driver'
# Jar 包路径
jar_file = 'D:\code\oracle-compatibility-tool\pydrivers\oceanbase-client-2.4.1.jar'
# 建立连接
conn = jaydebeapi.connect(
driver,
url,
[user, password],
jar_file
)
curs = conn.cursor()
# 执行查询
curs.execute("SELECT * FROM test")
result = curs.fetchall()
for row in result:
print(row)
curs.close()
conn.close()
做了一个Oracle兼容性测试工具,已基本支持大部分主流国产库,用于快速判断对oracle的兼容情况,展示一部分For Oceanbase(oracle租户):
