python 3.6连接KingbaseES V8

概述

国产化是当前IT领域的热点话题之一,人大金仓数据库KingbaseES V8是当前比较流行的国产化数据库,KingbaseES已提供了python驱动,本文介绍一下python连接KingbaseES V8的方法

测试环境

CPU:X86_64
OS:CentOS 7
Python 3.6.10
kingbase (Kingbase) V008R003C002B0160

一、下载KingbaseES V8的python驱动

下载地址:https://kingbase.oss-cn-beijing.aliyuncs.com/KES/07-jiekouqudong/Python.rar
在这里插入图片描述
下载后得到一个文件夹在这里插入图片描述
解压后有5个子文件,其中ksycopg2_linux_amd64_python3.6.tar.gz为x86_64平台linux环境驱动包
在这里插入图片描述
再次解压,文件夹ksycopg2内容即为kingbase的python 3.6驱动
在这里插入图片描述

二、把驱动放入python库搜索路径

python搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:

1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

此处我们设置环境变量PYTHONPATH
vi ~/.bash_profile
在这里插入图片描述
把驱动ksycopg2文件夹拷入PYTHONPATH子目录
在这里插入图片描述
Kingbase数据库的python驱动依赖内部的KCI库文件,所以还需要把libkci相关库文件放入LD_LIBRARY_PATH中,libkci相关库文件在KingbaseES安装目录Server/lib子目录下,把该目录下libkci相关库文件复制到指定路径下(/opt/kdblib),并把/opt/kdblib加入LD_LIBRARY_PATH;
注意:不建议把Server/lib路径直接加到root的LD_LIBRARY_PATH,有部分库文件可能会和操作系统库冲突
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、测试使用python连接Kingbase

连接数据库并建表create.py:

#!/usr/bin/python
import ksycopg2
conn = ksycopg2.connect(database="TEST", user="SYSTEM", password="111111", host="127.0.0.1", port="54321")
cur = conn.cursor()
cur.execute("create table test(id integer,name varchar(23))")
conn.commit()
conn.close()

运行测试程序,登录数据库查看,test表已创建成功:
在这里插入图片描述
insert操作insert.py:

#!/usr/bin/python
import ksycopg2
conn = ksycopg2.connect(database="TEST", user="SYSTEM", password="111111", host="127.0.0.1", port="54321")
cur = conn.cursor()
cur.execute("insert into test values(%s,%s)",(1,"xiexie1"))
cur.execute("insert into test values(%s,%s)",(2,"xiexie2"))
cur.execute("insert into test values(%s,%s)",(3,"xiexie3"))
cur.execute("insert into test values(%s,%s)",(4,"xiexie4"))
conn.commit()
conn.close()

运行结果确认:
在这里插入图片描述

select操作select.py:

#!/usr/bin/python
import ksycopg2
conn = ksycopg2.connect(database="TEST", user="SYSTEM", password="111111", host="127.0.0.1", port="54321")
cur = conn.cursor()
cur.execute("SELECT * from test")
row = cur.fetchone()
while row:
        print("ID = ", row[0])
        print("NAME = ", row[1], "\n")
        row = cur.fetchone()
conn.close()

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sxqinjh/article/details/109272042
v8