暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8sV8.8在Linux下用csdk设置odbc连接(数据库集群)

原创 一直在路上 2022-05-26
1962

安装前准备:GBase 8sV8.8数据库已正常安装,主备集群已搭建。
实例名为主:gbase1,备:gbase2

1、主备建gbasedbt用户(如果已设置,则跳过)

groupadd gbasedbt
useradd -g gbasedbt -d /home/gbasedbt -s /bin/bash -m gbasedbt

root账号执行:

mkdir -p /home/gbasedbt/gbase8s

将csdk压缩包上传服务器(本次使用的clientsdk_3.3.0_2_36477d_RHEL6_x86_64.tar),解压
安装csdk330,全部回车缺省安装,本次安装目录:/home/gbasedbt/gbase8s(可自由设置)

2、切换账号,配置环境变量profile.gbase1

su - gbasedbt

设置

/home/gbasedbt/gbase8s/etc/sqlhosts.gbase1(如果已设置,则跳过)

注意:路径可能不同,sqlhosts名称与实例名称相关,已安装的数据库是已设置状态
sqlhosts.gbase1文件内容:

gbase1  onsoctcp        IP地址1  9088    g=db_group
gbase2  onsoctcp        IP地址2  9088    g=db_group

cm_update       group   -       -       i=2,c=0
w1      onsoctcp        IP地址1  18888   g=cm_update
w2      onsoctcp        IP地址2  18888   g=cm_update
        
cm_read         group   -       -       i=3,c=0
r1      onsoctcp        IP地址1  19999   g=cm_read
r2      onsoctcp        IP地址2  19999   g=cm_read

3、配置环境变量/home/gbasedbt/profile.gbase1(添加odbc.ini等变量到profile.gbase1,文件可自由命名,如果已设置,则跳过)

export PATH=/home/gbasedbt/gbase8s/bin:$PATH
export DBACCESS_SHOW_TIME=1
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1
export LD_LIBRARY_PATH=${GBASEDBTDIR}/lib:${GBASEDBTDIR}/lib/esql:${GBASEDBTDIR}/lib/cli
export GBASEDBTSERVER=cm_update
export GBASEDBTSQLHOSTS=/home/gbasedbt/gbase8s/etc/sqlhosts.gbase1
export ODBCINI=/home/gbasedbt/gbase8s/etc/odbc.ini
export GBASEDBTDIR=/home/gbasedbt/gbase8s

配置账户自动切换:gbasedbt账户.bash_profile(如果已设置,则跳过)
添加

source /home/gbasedbt/profile.gbase1

如果程序用root启动的,则在root也设置一下,root账户.bash_profile
添加

source /home/gbasedbt/profile.gbase1

4、配置/home/gbasedbt/gbase8s/etc/odbc.ini

; GBase ODBC Sample File
;
; File: odbc.ini
;
;---------------------------------------------------------------------------

[ODBC Data Sources]
GB8=GBase ODBC DRIVER
;
; Define ODBC Database Driver’s Below - Driver Configuration Section
;
[GB8](可自主命名)
Driver=/home/gbasedbt/gbase8s/lib/cli/iclit09b.so
Description=GBase ODBC DRIVER
Database=gbasedb
LogonID=gbasedbt
pwd=GBase8s
Servername=cm_update
CursorBehavior=0
DB_LOCALE=zh_CN.utf8
CLIENT_LOCALE=zh_CN.utf8
TRANSLATIONDLL=/home/gbasedbt/gbase8s/lib/esql/igo4a304.so

;
; UNICODE connection Section
;
[ODBC]
;uncomment the below line for UNICODE connection
UNICODE=UCS-2
;
; Trace file Section
;

Trace=0
----(是否开启日志。如果不看日志,日志特别大可以改为0关闭日志)
TraceFile=/home/gbasedbt/gbase8s/odbc/odbctrace.out
InstallDir=/home/gbasedbt/gbase8s/odbc
TRACEDLL=idmrs09a.so

CursorBehavior=0
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
TRANSLATIONDLL=/home/gbasedbt/gbase8s/lib/esql/igo4a304.so

;
; UNICODE connection Section
;
[ODBC]
;uncomment the below line for UNICODE connection
UNICODE=UCS-2
;
; Trace file Section
;

验证:
方法一:
命令行执行dbaccess
image.png
image.png
image.pngimage.png

方法二:
如果没有unixODBC,则先进行安装:
查询:
image.png
安装:

yum -y install unixODBC.x86_64

安装和配置完成后,用gbasedbt账号在终端运行

isql -v GB8

返回如下信息,则证明 ODBC 配置成功(手动输入命令,不建议粘贴)。
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+

至此,在Linux下用csdk设置数据库集群odbc连接已成功。

引申:

安装配置完csdk与unixODBC之后,可使用Django

1, Python安装

通过yum安装python3及python3-devel
yum install python3 python3-devel

Linux下安装完pip3之后,利用pip安装第三方库是默认是从国外下载包的。可以把镜像源设置成国内的,这样安装第三方库时可以获得更快的下载速度。
设置方法如下:
1)、在用户 目录下面,新建一个.pip文件夹
2)、在.pip文件夹下新建pip.conf文件
pip.conf文件的内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

这里设置成了清华的镜像源,也可以设置成其他的,比如
“https://mirrors.aliyun.com/pypi/simple”

“http://pypi.douban.com/simple”

2, Django 2.1安装

直接使用pip3安装Django,命令如下:
pip3 install Django==2.1

显示Django的版本
pip3 list

3, 安装pyodbc

pyodbc安装需要gcc,gcc-devel,gcc-c++,python3-devel
直接使用pip安装pyodbc,命令如下:
pip3 install pyodbc

将自动安装最新的版本,需要的pyodbc版本需高于4.0.21

4, 安装django-gbasedbtdb 1.7.0

Django-gbasedbtdb 1.7.0由Django-informixdb 1.7.0修改而来,适用于Django 2.1版本
Django-gbasedbtdb 1.7.0下载地址:https://gbasedbt.com/dl/django-gbasedbtdb
下载后解压至django-gbasedbtdb-1.7.0目录下
在django-gbasedbtdb-1.7.0h目录下,执行安装
python3 setup.py build install

安装过程中会检查依赖包并且安装。
安装完成后,显示django-gbasedbtdb的版本
[gbasedbt@gbasehost01 ~]$ pip3 list
Django (2.1)
django-gbasedbtdb (1.7.0)
pip (9.0.3)
pyodbc (4.0.30)
pytz (2020.1)
setuptools (39.2.0)

5, 安装PyCharm

PyCharm需要java 1.8的支持,故系统需要安装openjdk 1.8
解压pycharm-community-2020.2.1.tar.gz生成pycharm-community-2020.2.1目录,在用户的环境变量中增加PYCHARM_HOME=HOME/pycharm-community-2020.2.1,及PATH=PYCHARM_HOME/bin:PATHexportPYCHARMHOME=PATH export PYCHARM_HOME=HOME/pycharm-community-2020.2.1
export PATH=PYCHARMHOME/bin:PYCHARM_HOME/bin:PATH

项目连接数据库
在Projects目录下,执行
django-admin startproject proj01

命令,创建一个新的proj01项目
开启PyCharm,打开项目$HOME/Projects/proj01

编辑settings.pys文件,在DATABASES中,使用以下内容替换掉default
‘default’: {
‘ENGINE’: ‘django_gbasedbtdb’, # 引擎使用django_gbasedbtdb
‘NAME’: ‘utf8’, # 连接名
‘SERVER’: ‘gbase01’, # GBASEDBTSERVER
‘USER’: ‘gbasedbt’,
‘PASSWORD’: ‘GBase123’,
‘OPTIONS’: {
‘DRIVER’: ‘/opt/gbase/lib/cli/iclit09b.so’, # Linux, iclit09b.so
‘CPTIMEOUT’: 120,
‘CONN_TIMEOUT’: 120,
‘ISOLATION_LEVEL’: ‘READ_UNCOMMITTED’,
‘LOCK_MODE_WAIT’: 10,
‘VALIDATE_CONNECTION’: True,
},
‘CONNECTION_RETRY’: {
‘MAX_ATTEMPTS’: 10,
},
‘TEST’: {
‘NAME’: ‘utf8’,
‘CREATE_DB’: False
}
}

 同时,可选修改以下内容

ALLOWED_HOSTS = [’*’]

LANGUAGE_CODE = ‘zh-Hans’

TIME_ZONE = ‘Asia/Shanghai’

在PyCharm的终端中运行
python3 manage.py startapp app01

创建应用app01,生成app01文件夹及其中的一些文件

在settings.pys文件中的INSTALLED_APPS中增加’app01’,
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘app01’, # 增加这项
]

在app01/models.py中增加以下内容
class Book(models.Model):
id = models.AutoField(primary_key=True) # id 会自动创建,可以手动写入
title = models.CharField(max_length=32) # 书籍名称
price = models.DecimalField(max_digits=5, decimal_places=2) # 书籍价格
publish = models.CharField(max_length=32) # 出版社名称

改变模型后执行makemigrations命令可以令Django生成数据库迁移文件,用于记录数据库变更历史,这里生成了app01/migrations/0001_initial.py。
执行migrate命令来创建数据库表:
[gbasedbt@gbasehost01 proj01]$ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial… OK
Applying auth.0001_initial… OK
Applying admin.0001_initial… OK
Applying admin.0002_logentry_remove_auto_add… OK
Applying admin.0003_logentry_add_action_flag_choices… OK
Applying contenttypes.0002_remove_content_type_name… OK
Applying auth.0002_alter_permission_name_max_length… OK
Applying auth.0003_alter_user_email_max_length… OK
Applying auth.0004_alter_user_username_opts… OK
Applying auth.0005_alter_user_last_login_null… OK
Applying auth.0006_require_contenttypes_0002… OK
Applying auth.0007_alter_validators_add_error_messages… OK
Applying auth.0008_alter_user_username_max_length… OK
Applying auth.0009_alter_user_last_name_max_length… OK
Applying sessions.0001_initial… OK

记住:改变模型时需要做以下三步:
改变models.py中的模型;
执行python3 manage.py makemigrations来创建数据库迁移文件;
执行python3 manage.py migrate来修改数据库。
[gbasedbt@gbasehost01 proj01]$ python3 manage.py makemigrations app01
Migrations for ‘app01’:
app01/migrations/0001_initial.py
- Create model Book
[gbasedbt@gbasehost01 proj01]$ python3 manage.py migrate app01
Operations to perform:
Apply all migrations: app01
Running migrations:
Applying app01.0001_initial… OK
[gbasedbt@gbasehost01 proj01]$

试用Django API
执行以下命令打开Python Shell
[gbasedbt@gbasehost01 proj01]$ python3 manage.py shell
Python 3.6.8 (default, Apr 2 2020, 13:34:55)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
(InteractiveConsole)

尝试执行以下API接口操作

from app01.models import Book
Book.objects.all()
<QuerySet []>

book1 = Book(title=“GBase 8s”, price=100, publish=“GBase Publish”)
book1.save()
Book.objects.all()
<QuerySet [<Book: Book object (1)>]>

book1.id
1

Django管理网站简介
Django根据models自动生成管理网站。
1, 创建管理员账户
执行以下命令,根据提示输入用户名、密码:
[gbasedbt@gbasehost01 proj01]$ python3 manage.py createsuperuser
用户名 (leave blank to use ‘gbasedbt’): webadmin
电子邮件地址: dbt@gbasedbt.com
Password:
Password (again):
Superuser created successfully.

2, 启动开发服务器
执行python3 manage.py runserver 0.0.0.0:8000命令启动开发服务器,
[gbasedbt@gbasehost01 proj01]$ python3 manage.py runserver 0.0.0.0:8000
Performing system checks…
System check identified no issues (0 silenced).
September 14, 2020 - 13:19:29
Django version 2.1, using settings ‘proj01.settings’
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

使用浏览器访问http://127.0.0.1:8000/admin/ (之前我们开启了ALLOWED_HOSTS = [’*’],允许使用其它IP访问),将看到以下页面:

使用上一步创建的管理员账户登录,即可进入Django管理网站首页。

3, 添加app01应用
首页默认是没有app01应用的,必须修改app01/admin.py文件:
from django.contrib import admin

from .models import Book

admin.site.register(Book)

在浏览器中刷新页面:

点击Books即可对Book表(app01_book表)进行增删改查等操作。

最后修改时间:2023-09-08 16:27:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论