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