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