Python是一门高级的通用编程语言,适用于广泛的领域:Web开发、数据科学、人工智能和机器学习、自动化运维和测试、游戏开发等多个应用场景。
本文使用一个例子来说明Python语言如何使用连接访问GBase 8a MPP Cluster数据库集群。
GBase Python 概述
GBase Python 接口是 Python 语言连接并使用 GBase 数据库的接口驱动程序。GBase Python 接口基于 Python Database API Specification 2.0 标准编写。接口兼容标准的同时并支持如下特性:
- 完全支持 GBase 8a 及 8a 集群的特性
- 完全支持 SQL 标准语法
- 支持二进制流插入、更新
- 支持批量插入优化
- 支持多 SQL 语句执行和获取多结果集
- 支持 TCP/IP 协议
- 支持 Python 的 datetime 和 GBase 时间类型的映射。
GBase Python 架构
GBase Python 接口提供了统一的客户端访问数据库、获取数据、管理数据
的方式,使用如下介绍的核心类完成所有数据库操作。
主要包括4个核心类:
- GBaseConnection :GBase 数据库的连接。
- GBaseCursor :执行 GBase 数据库操作的游标类,可以执行 SQL 语句、存储过程、获取结果集。
- GBaseError :异常处理类,定义接口抛出的异常。
- GBaseConstants :常量类,定义客户端标记、字符集等。
下图展示了 GBase Python 的整体结构。
Python测试环境准备
本文的例子是在Windows电脑上编写并执行,使用到的软件包括:
- python 3.8版本:python-3.8.7rc1-amd64.exe (python3以上版本都可以)
- python 集成环境(IDE):pycharm-community-2023.1.2.exe
- GBase Python:gbase-connector-python-9.5.3_build2.zip
以上安装包可以从网上搜索下载,GBase Python 驱动安装包需要找GBase技术人员索要或者在官网www.gbase.cn进行申请。
安装python 3.8
安装python3.8时,双击python-3.8.7rc1-amd64.exe, 勾选 Add python 3.8 to path选项,之后默认安装即可。
配置环境变量
右击此电脑 > 属性 > 高级系统设置 > 环境变量,检查一下在系统变量中path变量中是否已经有python变量。双击 path变量查看,若没有,可以新建增加,增加python安装路径,增加python安装路径中的scripts目录即可。增加效果看下图:
安装GBase Python
建议 gbase-connector-python-9.5.3_build2.zip 文件解压到一个没中文的目录下
在DOS界面下,使用python命令进行安装,在 .\gbase-connector-python\ 目录下的 consolez 下执行 python setup.py install
验证是否装好 :
在 DOS 下执行 pip list 可以看到列表中有 gbase-connnector-python
安装pycharm
双击pycharm-community-2023.1.2.exe 安装即可。
安装完pycharm, 需要调试python解释器。
打开parcharm软件,点击设置 > 项目 > python解释器
新打开的时候应该是没有 python3.8 解释器的
没有解释器,则我们手动添加解释器。
点击添加解释器 > 添加本地解释器
第一步选择virtualenv环境 ;第二步选择新建;第三步输入python的安装路径;第四步选择解释器为python.exe;第五步点击确定。
完成上述步骤之后,就能在上一步python解释器中查看有python3.8的解释器存在了。
至此,整个连接GBase 8a MPP Cluster数据库的python环境就搭建完成了。关键点都介绍清楚了,下面就开始写代码连接8a数据库了。
Python连接 GBase 8a 代码
在pycharm中新建一个ceshi.py文件,写上下面例子代码。
代码实现连接8a数据库,并在test数据库中新建一个testpython表,插入100条数据,然后查询。
# 在 python 文件头部引用接口类gbase.connector
from gbase.connector import connect,Error
# gbase 8a数据库的服务器管理节点IP、数据库名称,用户名和秘密信息
config = {'host':'139.9.241.217','port':22059,'database':'test',
'user':'guest','passwd':'peixun'}
try:
# 连接gbase 8a数据库
conn = connect()
conn.connect(**config)
cur = conn.cursor()
# 执行SQL
cur.execute("DROP TABLE IF EXISTS testpython")
# 新建表
cur.execute("CREATE TABLE testpython (COL1 INT, COL2 VARCHAR(20))")
opfmt = "INSERT INTO testpython(COL1, COL2) VALUES(%s, %s)"
rows = []
# 向表中插入100条数据
for i in range(0, 100):
rows.append((i, "row" + str(i)))
cur.executemany(opfmt, rows)
conn.commit()
# 查询表中的数据
cur.execute("SELECT * FROM testpython")
rows = cur.fetchall()
for row in rows:
print(row)
except Error as e:
print(e)
finally:
if conn is not None:
conn.close()
复制
执行后,屏幕上显示出表的查询结果,显示100条记录。
打开企业管理器,查询test库下面确实有python程序新创建的testpython表,里面记录是100条。
参考资料
- 《GBase 8a 程序员手册PYTHON篇.pdf 》
下载: 《GBase 8a 程序员手册PYTHON篇.pdf 》