gbase8s 環境搭建和python連接gbase8s
最近因為一些業務,接觸到了國產操作系統和國產數據庫。
真是讓人.......無語!
所謂國產,拿別人東西過來改改便是國產了。
比如 南大通用數據庫,GBASE8S,就是用 informix 改了改..........
使用GBASE8S,記錄下 各種配置。
假設 GBASE8S 安裝在 /opt/gbase8s目錄下
1、新建用戶組和用戶 gbasedbt
2、設置環境變量
GBASEDBTDIR=/opt/gbase8s GBASEDBTSERVER=ol_gbasedbt12 ONCONFIG=onconfig.ol_gbasedbt12 GBASEDBTSQLHOSTS=/opt/gbase8s/etc/sqlhosts.ol_gbasedbt12 GL_USEGLU=1 DB_LOCALE=zh_CN.utf8 CLIENT_LOCALE=zh_CN.utf8 ODBCINI=/opt/gbase8s/etc/odbc.ini LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql PATH=$GBASEDBTDIR:$LD_LIBRARY_PATH:$GBASEDBTDIR/bin:$GBASEDBTDIR/extend/krakatoa/jre/bin:$PATH #dbtpy需要該參數 CSDK_HOME=$GBASEDBTDIR export GBASEDBTDIR GBASEDBTSERVER ONCONFIG GBASEDBTSQLHOSTS GL_USEGLU ODBCINI LD_LIBRARY_PATH CSDK_HOME PATH
3、sqlhosts.ol_gbasedbt12 的配置
ol_gbasedbt12 onsoctcp 172.14.23.12 9899
4、/opt/gbase8s/etc/odbc.ini 配置如下
[ODBC Data Sources] testdb=GBase ODBC DRIVER ; ; Define ODBC Database Driver's Below - Driver Configuration Section ; [testdb] Driver=/opt/gbase8s/lib/cli/iclis09b.so Description=GBase ODBC DRIVER Database=d5000 LogonID=gbasedbt pwd=123456 Servername=ol_gbasedbt12 CursorBehavior=0 CLIENT_LOCALE=en_us.8859-1 DB_LOCALE=en_us.8859-1 GL_USEGLU=1 TRANSLATIONDLL=/opt/gbase8s/lib/esql/igo4a304.so [ODBC] Trace=1 TraceFile=/tmp/odbctrace1.out InstallDir=/opt/gbase8s TRACEDLL=/opt/gbase8s/lib/cli/idmrs09a.so
以上配置,注意幾個地方
a)LogonID 就是為 gbase8s 分配的用戶
b)Servername 即是 第三條 配置的名稱
c)CLIENT_LOCALE 和 DB_LOCALE 默認是 en_us.8859-1
5、如果 使用 DbtPy (python3)遠程鏈接 gbase8s ,
需要 安裝 python3 python3-devel
python版本不高于3.7
pip install DbtPy
import sys
import DbtPy
print("Python DbtPy測試程序開始運行.\n")
connectStr="PROTOCOL=onsoctcp;HOST=172.14.23.12;SERVICE=9899;SERVER=ol_gbasedbt12;DATABASE=testdb;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1"
conn=DbtPy.connect(connectStr, "gbasedbt", "123456")
stmt = DbtPy.exec_immediate(conn, "select * from YK_YX_RELY_AVC limit 3")
data = DbtPy.fetch_assoc(stmt)
print(data)
6、也可以使用 jaydebeapi 鏈接 gbase8s .
不過,這里需要下載 gbasedbtjdbc_3.3.0_2.jar
import sys
import jaydebeapi
print("\nPython JayDeBeApi JDBC 測試程序開始運行.\n")
conn = jaydebeapi.connect("com.gbasedbt.jdbc.Driver",
"jdbc:gbasedbt-sqli://172.16.97.98:8900/testdb:GBASEDBTSERVER=ol_gbasedbt12;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1;IFX_LOCK_MODE_WAIT=60",
["gbasedbt", "123456"],
"/home/gbasedbt/gbasedbtjdbc_3.3.0_2.jar")
mycursor = conn.cursor()
mycursor.execute("select * from YK_YX_RELY_AVC limit 3")
rows = mycursor.fetchall()
print(rows)
mycursor.close()
conn.close()
7、說明:
A服務器是Gbase8s 服務器,B服務器是應用服務器,上述5和6 即 run在 B服務器上 。
B服務器不需要安裝Gbase8s,但是需要安裝 Gbase8s 的 CSDK 。 配置信息 只需要配置 上述2 和 3
CSDK 從官網下載的有問題。 可以直接從 A服務器 copy /opt/gbase8s 目錄 到 B 服務器上即可。 但是 /opt/gbase8s 太大。可以不用 copy storage 目錄即可。
8、查看 CSDK 是否成功?
esql -V 返回如下信息 則 成功。
GBase CSDK Version 4.10, GBASE-ESQL Version 4.10.FC4G1_2.0.1A2_2 Software Serial Number AAA#B000000
浙公網安備 33010602011771號