概述
國產化是當前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()
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/193146.html
標籤:其他
