python 3.6鏈接KingbaseES V8

概述

國產化是當前IT領域的熱點話題之一,人大金倉數據庫KingbaseES V8是當前比較流行的國產化數據庫,KingbaseES已提供了python驅動,本文介紹一下python鏈接KingbaseES V8的方法python

測試環境

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


linux

1、下載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驅動
在這裏插入圖片描述





shell

2、把驅動放入python庫搜索路徑

python搜索路徑
當你導入一個模塊,Python 解析器對模塊位置的搜索順序是:
數據庫

一、當前目錄
二、若是不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每一個目錄。
三、若是都找不到,Python會察看默認路徑。UNIX下,默認路徑通常爲/usr/local/lib/python/。
模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量裏包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。


bash

此處咱們設置環境變量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,有部分庫文件可能會和操做系統庫衝突
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述








測試

3、測試使用python鏈接Kingbase

鏈接數據庫並建表create.py:fetch

#!/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:

spa

#!/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:code

#!/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()

運行結果:

在這裏插入圖片描述

相關文章
相關標籤/搜索