GBase 8s
其他
文章
使用python-gbase8sdb操作GBase 8s数据库
发表于2025-03-24 16:57:39427次浏览0个评论
python-gbase8sdb介绍
GBase 8s V8.8作为信创数据库,广泛应用于金融、交通、电信、能源等行业。为扩展和补充开发生态,GBase 8s技术团队提供了数据库的python语言驱动python-gbase8sdb。
python-gbase8sdb 是一个 Python 编程语言扩展模块,允许 Python 程序连接到 GBase 8s 数据库, 目前支持Python3.7至Python3.12版本。
该模块符合 Python 数据库 API 2.0 规范,并且包含大量扩展和少数排除项。
1 安装
pip install gbase8sdb2 连接数据库
2.1 配置GSDK
gbase8sdb驱动连接数据库依赖GSDK 1.1版本 ,所以您需要联系GBase 8s技术支持或通过官方渠道获取相应版本的GSDK,并安装到您的机器上, 并设置如下环境变量:
GSDK_PATH=/path/to/gsdk
export LD_LIBRARY_PATH=${GSDK_PATH}/lib:$LD_LIBRARY_PATH2.2 导入gbase8sdb
import gbase8sdb2.3 创建数据库连接
# 生成dsn
dsn = gbase8sdb.makedsn(
server_name="ol_gbasedbt1210_2", # 数据库实例名称
db_name="testdbutf8", # 数据库名称
host="192.168.xxx.xxx", # 数据库实例所在服务器的IP地址或域名
port=9088, # 数据库实例的端口号
db_locale='zh_CN.utf8' # 数据库字符集
)
user = "gbasedbt" # 数据库用户名
password = "xxxxxx" # 数据库用户密码
# 创建数据库连接
conn = gbase8sdb.connect(dsn, user, password) 3 数据库操作
3.1 创建游标对象
cursor = conn.cursor()3.2 建表
cursor.execute("drop table if exists t")
cursor.execute("""
create table t(
c_int int primary key,
c_float float,
c_varchar varchar(100),
c_timestamp timestamp,
c_interval interval day to second,
c_blob blob,
c_clob clob,
c_bool number(1)
)"""
)3.3 插入int float varchar类型数据
cursor.execute("""
insert into t(c_int, c_float, c_varchar) values(?, ?, ?)
""", (1, 3.14, 'hello gbase8sdb')
)3.4 插入timestamp interval类型数据
import datetime
cursor.execute("""
insert into t(c_int, c_timestamp, c_interval)
values(?, ?, ?)
""", (2, datetime.datetime.now(), datetime.timedelta(days=1, seconds=2))
)3.5 插入blob clob类型数据
# 获取图片的字节序列
with open("picture.jpg", 'rb') as f:
blob_data = f.read()
# 将字节序列保存到blob列中,clob列中存储超长字符串
cursor.execute("""
insert into t(c_int, c_blob, c_clob)
values(?, ?, ?)
""", (3, blob_data, '你好' * 1024 * 1024)
)3.6 插入boolean类型数据
cursor.execute("""
insert into t(c_int, c_bool) values(?, ?)
""", (4, True)
)3.7 获取查询结果
3.7.1 查询非大对象数据
cursor.execute("select c_blob, c_clob from t where c_int in (?, ? ,?)", (1, 2, 4))
print(cursor.fetchall())3.7.2 查询大对象数据
cursor.execute("select c_blob, c_clob from t where c_int = ?", (3,))
for row in cursor.fetchall():
blob_obj, clob_obj = row[0] # 返回LOB类型对象
# 从LOB对象中获取数据
blob_data = blob_obj.read()
clob_data = clob_obj.read()4 关闭游标和连接
cursor.close()
conn.close()
评论
登录后才可以发表评论
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529