概述
ob没有提供连接ob的python驱动包,但通过jaydebeapi封装,通过ob jdbc驱动间接连接oceanbase。
需要的包
jdk Java 8 及以上版本
jdbc(OceanBase Connector/J )驱动包 oceanbase-client-[版本号].jar
OceanBase 下载 - 企业版数据库下载 - OceanBase 数据库下载中心
python 2.7/3.6.8 python-devel
可以下载源码编译安装JPype1-0.7.1.tar.gz
jaydebeapi 可以选择源码包进行安装JayDeBeApi-1.2.3.tar.gz,jaydebeapi 依赖 JPype1-0.7.1
示例
1、安装python3-devel,jdk
[root@ocp ~]$ yum install python3-devel
Package python3-devel-3.7.9-13.oe1.x86_64 is already installed.
[root@ocp ~]$ yum install jdk1.8
Package jdk1.8-2000:1.8.0_261-fcs.x86_64 is already installed.
$ java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
2、 下裁并上传ob jdbc client
[root@ocp ~/obtest]$ ls -l
total 3260
-rw-r--r-- 1 root root 3338130 Mar 23 2023 oceanbase-client-2.4.0.jar
3、下载并安装jaydebeapi
[root@ocp ~/obtest]$ ls -l
total 3768
-rw-r--r-- 1 root root 32929 Mar 13 2023 JayDeBeApi-1.2.3.tar.gz
-rw-r--r-- 1 root root 481300 Mar 23 2023 JPype1-0.7.1.tar.gz
-rw-r--r-- 1 root root 3338130 Mar 23 2023 oceanbase-client-2.4.0.jar
$ tar zxvf JPype1-0.7.1.tar.gz
$ cd JPype1-0.7.1
$ python3 setup.py install
Installed /usr/local/lib64/python3.7/site-packages/JPype1-0.7.1-py3.7-linux-x86_64.egg
Processing dependencies for JPype1==0.7.1
Finished processing dependencies for JPype1==0.7.1
$ tar zxvf JayDeBeApi-1.2.3.tar.gz
$ cd JayDeBeApi-1.2.3/
$ python3 setup.py install
Using /usr/local/lib64/python3.7/site-packages/JPype1-0.7.1-py3.7-linux-x86_64.egg
Finished processing dependencies for JayDeBeApi==1.2.3
4、连接ob示例代码
- 在
url字段填入相应的 IP 地址和端口号。 - 在
driver字段输入类路径。 - 在
jarFile字段填入相应的 JAR 安装包路径。
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
encoding = "utf8"
import jaydebeapi
def ob_test():
url = 'jdbc:oceanbase://host:port/database' #连接oracle租户不需要指定database
user = 'user@tenant@obcluster' #用户@租户#集群名
password = 'paxxx'
driver = 'com.alipay.oceanbase.jdbc.Driver'
jarFile = './oceanbase-client-2.4.0.jar'
sqlStr = 'select count(*) cnt from dba_objects'
conn = jaydebeapi.connect(driver, url, [user, password], jarFile)
curs = conn.cursor()
curs.execute(sqlStr)
result = curs.fetchall()
print(result)
curs.close()
conn.close()
ob_test()
注意事项
使用multiprocessing多进程并发时需要使用spawn方式启动进程
import multiprocessing as mp
num_proc=100
ctx=mp.get_context('spawn')
success_cnt= ctx.Value('i',0,lock=True)
delay_sum= ctx.Value('d',0,lock=True)
proc_array=[ctx.Process(target=test_loop, args=(i,success_cnt,delay_sum,)) for i in range(num_proc)]
最后修改时间:2024-07-11 10:32:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




