redhat 6.2 x86_64安装python3.6.15用于查询oceanbase信息

主要是因为redhat6.2有某些特殊需求,还要继续使用,所以通过安装低版本python3来解决ob的使用需求。

一、准备好oceanbase所需要的java1.8
1、取得jdk-8u391-linux-x64.tar.gz
2、解压jdk-8u391-linux-x64.tar.gz
3、mv jdk1.8.0_391/ /usr/local
二、安装python3.6.15
1、取得Python-3.6.15.tgz
2、解压tar zxvf Python-3.6.15.tgz
3、安装支持包

yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install libffi libffi-devel

4、编译安装python3.6.15

cd Python-3.6.15
./configure --prefix=/usr/local/python3.6.15 --enable-shared CFLAGS=-fPIC --enable-optimizations
make
make install

5、使用验证python3.6.15

ver=3.6.15
cd /usr/bin
ln -sv /usr/local/python${ver}/bin/python3 python${ver}
ln -sv /usr/local/python${ver}/bin/pip3 pip${ver}
ln -sv /usr/local/python${ver}/bin/python3 python${ver}

mkdir -p ~/.pip
cat  > ~/.pip/pip.conf <<EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
EOF


http_proxy=proxy.app.cz:8080
https_proxy=proxy.app.cz:8080
ftp_proxy=proxy.app.cz:8080
RSYNC_PROXY=proxy.app.cz:8080
export ftp_proxy
export http_proxy 
export https_proxy
export RSYNC_PROXY

cat  > /etc/ld.so.conf.d/python3.6.15.conf <<EOF
/usr/local/python3.6.15/lib
EOF

ldconfig

pip3.6.15 install --upgrade pip
pip3.6.15 install virtualenv

ln -sv /usr/local/python3.6.15/bin/virtualenv /usr/bin/virtualenv3.6.15


su - user01
virtualenv venv3.6.15

mkdir -p ~/.pip
cat  > ~/.pip/pip.conf <<EOF
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
EOF

http_proxy=proxy.app.cz:8080
https_proxy=proxy.app.cz:8080
ftp_proxy=proxy.app.cz:8080
RSYNC_PROXY=proxy.app.cz:8080
export ftp_proxy
export http_proxy 
export https_proxy
export RSYNC_PROXY

source ~/venv3.6.15/bin/activate

pip install JayDeBeApi

export JAVA_HOME=/usr/local/jdk1.8.0_391/jre
java -version


6、db_query_obDb_getSettledate-1.sh

export JAVA_HOME=/usr/local/jdk1.8.0_391/jre
source .venv3.6.15/bin/activate
python db_query_obDb_getSettledate-1.py  x.x.x.x:2883 用户@租户#集群 用户密码

7、db_query_obDb_getSettledate-1.py

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
encoding = "utf8"

import sys
import os
import jaydebeapi
import logging


# 创建logger对象

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)  # log等级总开关

# log输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")

# 控制台handler
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO) # log等级的开关
stream_handler.setFormatter(formatter)

# 文件handler
#--------------------------------------------------------------------
root_dir = os.path.expanduser("~")
logdir = root_dir + "/log"
if os.path.exists(logdir):
    pass
    #print("日志目录存在")
else:
    print("日志目录" + logdir + "不存在")
    os.mkdir(logdir)

if os.path.exists(logdir):
    pass
else:
    print("创建日志目录" + logdir + "失败!")
    exit(1)

file_handler = logging.FileHandler(root_dir + "/log/" + f'{__name__.split(".")[0]}.log' + ".log")
#--------------------------------------------------------------------
file_handler.setLevel(logging.INFO) # log等级的开关
file_handler.setFormatter(formatter)

# 添加到logger
logger.addHandler(stream_handler)
logger.addHandler(file_handler)


def  db_query_obDb(url,user,password):

    homeDir = os.path.expanduser("~")
    #print(homeDir)
    driver = 'com.alipay.oceanbase.jdbc.Driver'
    jarFile = homeDir + '/lib/oceanbase-client-2.2.10.jar'
    sqlStr = "select to_char(t.settledate-1,'YYYYMMDD') from test_settledate t"
    conn = jaydebeapi.connect(driver, url, [user, password], jarFile)
    curs = conn.cursor()
    curs.execute(sqlStr)

    result = curs.fetchall()
    settledate=''.join(result[0])[:10]

    #settledate=""
    #for row in curs :
    #    print(row)
    #    settledate=row[0]

    #print(type(settledate))
    print(settledate)
    curs.close()
    conn.close()
    return settledate

if __name__ == '__main__':
    len_sys_argv = len(sys.argv)
    logger.info("参数个数len(sys.argv)=%d" % len_sys_argv )

    logger.info ("输出所有参数:")
    argv_num = 0
    for argv_num in range(0,len_sys_argv):
        now_argv = argv_num,sys.argv[argv_num]
        logger.info("%d sys.argv[%d]=%s" % (argv_num,argv_num,now_argv))
        argv_num = argv_num +1

    #设定参数个数
#####################
    len_sys_argv_std = 3
    len_sys_argv_practical = len_sys_argv -1
    if len_sys_argv_practical < len_sys_argv_std:
        logger.info ('参数个数必须 >= %d , 现值 = %d < %d' % (len_sys_argv_std,len_sys_argv_practical,len_sys_argv_std))
        logger.info ("""
参数一: OB的IP&port
参数二: OB的用户名
参数三: OB的密码
""")
        sys.exit()
    IpPort = sys.argv[1]
    url = 'jdbc:oceanbase://' + IpPort
    user = sys.argv[2]
    password = sys.argv[3]
    #url = 'jdbc:oceanbase://10.1.1.1:2883'
    #user = 'dbuser1@dbrun#obdb:1122334444'
    #password = 'Pass1111'
    db_query_obDb(url,user,password)

8、将oceanbase-client-2.2.10.jar放至所需 的~/lib目录

su - user1
cd ~/lib
get oceanbase-client-2.2.10.jar

9、测试

sh db_query_obDb__getSettledate-1.sh
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:78] - INFO: 参数个数len(sys.argv)=4
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:80] - INFO: 输出所有参数:
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:84] - INFO: 0 sys.argv[0]=(0, 'db_query_obDb__getSettledate-1.py')
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:84] - INFO: 1 sys.argv[1]=(1, '10.1.1.1:2883')
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:84] - INFO: 2 sys.argv[2]=(2, 'dbuser1@dbrun#obdb:1122334444')
2024-01-30 19:09:49,563 - db_query_obDb__getSettledate-1.py[line:84] - INFO: 3 sys.argv[3]=(3, 'Pass1111')
20231201
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值