GBase8s環境構築とPythonによるデータベース接続方法

業務の都合で、中国製オペレーティングシステムと中国製データベースを扱う機会がありました。

正直なところ......非常に複雑な気持ちになります!

いわゆる「国産」と称される製品は、他社の技術を改変しただけというケースが多いです。

例えば、南大通用データベースのGBASE8sは、Informixをベースに改修したもの・・・・・・

GBASE8sの利用にあたり、各種設定情報を記録しておきます。

GBASE8sが /opt/gbase8s ディレクトリにインストールされていることを前提とします。

1. 新しいグループとユーザー gbasedbt を作成

2. 環境変数の設定

GBASE_HOME=/opt/gbase8s
GBASE_SERVER_NAME=ol_gbasedbt12
CONFIG_FILE=onconfig.ol_gbasedbt12
SQL_HOSTS_FILE=/opt/gbase8s/etc/sqlhosts.ol_gbasedbt12
ENABLE_GL_UTIL=1
DATABASE_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
ODBC_CONFIG=/opt/gbase8s/etc/odbc.ini

LIBRARY_PATH_VAR=$GBASE_HOME/lib:$GBASE_HOME/lib/cli:$GBASE_HOME/lib/esql
EXEC_PATH=$GBASE_HOME:$LIBRARY_PATH_VAR:$GBASE_HOME/bin:$GBASE_HOME/extend/krakatoa/jre/bin:$PATH

#dbtpyを使用する場合に必要
SDK_ROOT=$GBASE_HOME

export GBASE_HOME GBASE_SERVER_NAME CONFIG_FILE SQL_HOSTS_FILE ENABLE_GL_UTIL ODBC_CONFIG LIBRARY_PATH_VAR SDK_ROOT EXEC_PATH

3. sqlhosts.ol_gbasedbt12 の設定

<strong>ol_gbasedbt12</strong>  onsoctcp  172.14.23.12    9899

4. /opt/gbase8s/etc/odbc.ini 設定内容

[ODBC Data Sources]
sampledb=GBase ODBC DRIVER
;
; Define ODBC Database Driver's Below - Driver Configuration Section
;
<strong>[sampledb]</strong>
Driver=/opt/gbase8s/lib/cli/iclis09b.so
Description=GBase ODBC DRIVER
<strong>Database</strong>=d5000
<strong>LoginUser</strong>=gbasedbt
<strong>Password</strong>=123456
<strong>ServerName</strong>=ol_gbasedbt12
CursorBehavior=0 
<strong>CLIENT_LOCALE</strong>=en_us.8859-1
<strong>DB_LOCALE</strong>=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) LoginUser は gbase8s に割り当てられたユーザー名

b) ServerName は第3項で設定した名称

c) CLIENT_LOCALE および DB_LOCALE のデフォルト値は en_us.8859-1

5. DbtPy (python3) を使用してリモート接続する場合:

python3 および python3-devel をインストールが必要です

pythonバージョンは3.7以下であること

pip install DbtPy

import sys
import DbtPy

print("Python DbtPyテストアプリケーション開始\n")

connection_string = "PROTOCOL=onsoctcp;HOST=172.14.23.12;SERVICE=9899;SERVER=ol_gbasedbt12;DATABASE=sampledb;DB_LOCALE=en_us.8859-1;CLIENT_LOCALE=en_us.8859-1"

db_connection = DbtPy.connect(connection_string, "gbasedbt", "123456")

statement = DbtPy.exec_immediate(db_connection, "SELECT * FROM YK_YX_RELY_AVC LIMIT 3")
result_data = DbtPy.fetch_assoc(statement)
print(result_data)

6. jaydebeapi を使用して接続することも可能です。

ただし、gbasedbtjdbc_3.3.0_2.jar をダウンロードする必要があります。

import sys
import jaydebeapi

print("\nPython JayDeBeApi JDBC テストアプリケーション開始\n")

db_connection = jaydebeapi.connect("com.gbasedbt.jdbc.Driver",
                           "jdbc:gbasedbt-sqli://172.16.97.98:8900/sampledb: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")

cursor_obj = db_connection.cursor()
cursor_obj.execute("SELECT * FROM YK_YX_RELY_AVC LIMIT 3")
records = cursor_obj.fetchall()
print(records)

cursor_obj.close()
db_connection.close()

7. 説明:

AサーバーがGbase8sサーバー、Bサーバーがアプリケーションサーバーの場合、上記5および6の処理はBサーバー上で実行されます。

BサーバーにはGbase8sをインストールする必要はありませんが、Gbase8sのCSDKをインストールする必要があります。設定情報は上記2および3のみ必要です。

公式サイトからダウンロードしたCSDKには問題がある場合があります。Aサーバーから直接 /opt/gbase8s ディレクトリをBサーバーにコピーすることが可能です。ただし、/opt/gbase8s は容量が大きいため、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

タグ: gbase8s Python database-connection JDBC ODBC

6月10日 17:31 投稿