人大金仓(KingbaseES V9)的Python环境的配置和基本使用

devtools/2024/9/23 0:00:41/

人大金仓(KingbaseES V9)提供了Python的驱动,可以通过Python来访问人大金仓数据库,不过这个配置并不算十分友好。

要使用这个Python驱动,除了要根据架构来下载对应的版本之外,还需要从KingbaseES的部署中拷贝一些lib文件出来。为了简化这些操作,我写一个脚本对自动化整个过程,并且把相关的文件都放在ksycopg2/一个目录下,这个脚本如下(download_psycopg2.sh)

    #!/bin/bash# 可以传一个路径前缀if [ ! -d  $1 ]; thenmkdir -p $1cd $1fi# 根据版本下载对应的文件ARCH=x86_64VERSION=v9r1NAME=ksycopg2if [ "$ARCH" == "x86_64" ]; thenARCH_PART='x86'elseARCH_PART=${ARCH}fiFILENAME=${VERSION}_${NAME}_${ARCH}.tar.gzURL=https://kingbase.oss-cn-beijing.aliyuncs.com/KES_INTERFACE/V9/python/${NAME}/${ARCH_PART}/${FILENAME}wget ${URL}# 解压TAR_NAME=`tar vxf ${FILENAME} | grep 3.5 | head -1 | cut -f1 -d"/"`echo ${TAR_NAME}tar vxf ${TAR_NAME}DIR_NAME=ksycopg2# 从kingbase的docker容器中拷贝相关文件, 设置软链CONTAINER_NAME=kingbasesudo docker cp ${CONTAINER_NAME}:/home/kingbase/install/kingbase/lib/libkci.so.5 ${DIR_NAME}/sudo docker cp${CONTAINER_NAME}:/home/kingbase/install/kingbase/lib/libkci.so.5.12 ${DIR_NAME}/cd ${DIR_NAME}ln -s _ksycopg.cpython-35m-x86_64-linux-gnu.so _ksycopg.so

执行./download_psycopg2.sh [TARGET_DIR] 就可以把需要的Python驱动放到目标目录中(注意会建一个子目录psycopg2/)。

接下来,可以把ksycopg2拷贝到实际项目的ksycopg2/目录下,通过如下的方式来import,可以避免在shell中每次设置LD_LIBRARY_PATH环境变量。

    import ctypesctypes.CDLL(f'ksycopg2/libkci.so.5')import ksycopg2

这样人大金仓的Python环境就算是弄好了。

接下来我们就首先连接数据库了,比如

    conn = ksycopg2.connect(database='kingbase',user='<username>',password='<password>',host='127.0.0.1',port=54321)

http://www.ppmy.cn/devtools/23139.html

相关文章

云仓酒庄央视广告战略签约,旗下品牌将迎来全新发展机遇

近日&#xff0c;备受瞩目的云仓酒庄2024-2025年度央视广告战略签约仪式盛大举行&#xff0c;云仓酒庄副总裁周玄代表云仓酒庄签约。云仓酒庄与中视中州&#xff08;央视代理机构&#xff09;成功签约&#xff0c;将在CCTV 2财经、CCTV 15音乐、CCTV 7国防军事、CCTV 4中文国际…

Linux系统编程---线程池并发服务器

模型原理分析&#xff1a; 线程池的关键优势在于它减少了每次任务执行时创建和销毁线程的开销 线程池的组成主要分为 3 个部分&#xff0c;这三部分配合工作就可以得到一个完整的线程池&#xff1a; 1. 任务队列&#xff0c;存储需要处理的任务&#xff0c;由工作的线程来处理…

【Go语言快速上手(五)】文件操作协程操作

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; GO快速上手 1. 前言2. GO语言的文件操…

【极速前进】20240422:预训练RHO-1、合成数据CodecLM、网页到HTML数据集、MLLM消融实验MM1、Branch-Train-Mix

一、RHO-1&#xff1a;不是所有的token都是必须的 论文地址&#xff1a;https://arxiv.org/pdf/2404.07965.pdf 1. 不是所有token均相等&#xff1a;token损失值的训练动态。 ​ 使用来自OpenWebMath的15B token来持续预训练Tinyllama-1B&#xff0c;每1B token保存一个che…

C++ 指针

每一个变量都有一个内存位置&#xff0c;每一个内存位置都定义了可使用连字号&#xff08;&&#xff09;运算符访问的地址&#xff0c;它表示了在内存中的一个地址。请看下面的实例&#xff0c;它将输出定义的变量地址&#xff1a; #include <iostream>using namesp…

每天学习一个Linux命令之yumhistory

每天学习一个Linux命令之yumhistory 简介 在Linux系统中&#xff0c;yum是一款常用的软件包管理器。它能够简化软件包的安装、更新和删除等操作。yumhistory命令是yum包管理器中的一个子命令&#xff0c;它用于查看和管理yum交互式操作的历史记录。通过yumhistory命令&#x…

spring cloud eureka 初始化报错(A bean with that name has already been defined)

报错内容 The bean ‘eurekaRegistration’, defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration E u r e k a C l i e n t C o n f i g u r a t i o n . c l a s s ] , c o u l d n o t b e r e g i s t e r e d . A …

NDK 入门(二)—— 调音小项目

NDK 入门系列主要介绍 JNI 的相关内容&#xff0c;目录如下&#xff1a; NDK 入门&#xff08;一&#xff09;—— JNI 初探 NDK 入门&#xff08;二&#xff09;—— 调音小项目 NDK 入门&#xff08;三&#xff09;—— JNI 注册与 JNI 线程 NDK 入门&#xff08;四&#xff…