GBase 8s
安装配置
问答

flask/sqlalchemy/python/windows/linux/gbase8s

发表于2025-11-04 15:06:4597次浏览24个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:GBase8sV8.8 S5.0.0B58

【操作系统】: win10

【CPU】:

【问题描述】*: python3.9  flask==2.2.5, sqlalchemy==2.0.44,gbase8s-sqlalchemy==2.0.1,gbase8sdb==0.2.1

### 你真的支持flask吗?

> 行行行,gbase-dialect-sqlalchemy_1.4.49不提供就算了(我理解是有一个sqlalchemy_gbase这样的一个方言包对吧,类似达梦数据库sqlalchemy_dm,人家达梦安装也挺费劲啊,但是人家的各种包都能找到,三下五除二我也整出来一套环境了),咱直接抛弃flask-sqlalchemy直接使用sqlalchemy行吧

### 参考https://www.gbase.cn/community/post/5608

> 说python直接安装gbase8s-sqlalchemy,配置GSDK(文档一直说获取获取,也不说在哪里获取,又找了半天),行,GSDK我就找,我也找到了对吧,我解压到D:\opt\GSDK_3.6.3_3X3_1_1.1.0_1_39d3ca_Windows_x86_64,也加入环境变量重启电脑了

 

### 还是按照https://www.gbase.cn/community/post/5608说的创建sqlalchemy引擎

sql_url = 'gbase8s+gbase8sdb://用户名:密码@IP:PORT/数据库?GBASEDBTSERVER=gbase8s01&DB_LOCALE=en_US.utf8&CLIENT_LOCALE=en_US.utf8'

engine = create_engine(
    sql_url,
    pool_size=20,
    pool_recycle=7200,  # 连接回收时间/秒/-1永不回收,session被回收之后重新生成新连接保证不断
    pool_pre_ping=True,  # 预检测池中连接是否有效,并替换无效连接
    pool_use_lifo=True,  # 使用后进先出的方式获取连接,允许多余连接保持空闲
    echo_pool=True,  # 打印出连接池的异常信息
    max_overflow=5  # 最大允许溢出连接池大小的连接数量
)
Session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
session = Session()
说字符集有问题:我就查看数据库字符集,我一看没问题啊,是英文,那我就改

### 结果不管咋改就是一个错误:23101

who help me i call you big bro

谁能帮帮我,我进行不下去了

评论

登录后才可以发表评论
用户头像
路路路发表于 6个月前
稍等
用户头像
路路路发表于 6个月前
GBase8sV8.8 S5.0.0B58,用的这个版本的数据库?
GBase用户31011发表于 6个月前
@路路路:没问题吧
GBase用户31011发表于 6个月前
@路路路:对
GBase用户31011发表于 6个月前
@路路路:(single_node GBase8sV8.8 S5.0.0B58 build e6f7a10c) compiled at 2025-07-09 14:28:04 commit 0 last mr 901 on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
用户头像
小鱼不吐泡泡发表于 6个月前
GBase8sV8.8 S5.0.0B58这个版本不能用这个。。。。。。换pg,用法和pg一样,你这个版本应该是项目上提供的吧,建议还是联系一下销售专项支撑吧
GBase用户31011发表于 6个月前
@小鱼不吐泡泡:你的意思是用sqlalchemy连接postgresql数据库的方式连gbase吗,反正我们公司其他java开发就是这样连的
用户头像
小鱼不吐泡泡发表于 6个月前
@GBase用户31011:对,这个版本是基于opengauss开发的,理论上是通用的
用户头像
小鱼不吐泡泡发表于 6个月前
@GBase用户31011:jdbc驱动能换还是换一下,不过也是得联系谁给你们的包要一下对应版本的驱动程序
GBase用户31011发表于 6个月前
@小鱼不吐泡泡:驱动用的sql_url = "postgresql+psycopg2://用户:密码@ip:port/dbname"
GBase用户31011发表于 6个月前
@小鱼不吐泡泡:AssertionError: Could not determine version from string '(single_node GBase8sV8.8 S5.0.0B58 build e6f7a10c) compiled at 2025-07-09 14:28:04 commit 0 last mr 901 on x86
_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit'这个错误是什么知道吗
用户头像
小鱼不吐泡泡发表于 6个月前
@GBase用户31011:https://blog.csdn.net/qq_44866828/article/details/150783059,感觉还是驱动的问题
GBase用户31011发表于 6个月前
@小鱼不吐泡泡:我按照理解让大模型帮我解决说是 GBase8s 返回的非标准版本字符串触发了sqlalchemy的严格检测的断言错误,找到源码修改校验,结果又爆了一个UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 2611: invalid continuation byte
错误,说是数据库返回的数据中包含非 UTF-8 编码的字符(如 GBK 编码的中文等),而 SQLAlchemy 底层默认用 UTF-8 解码这些字符,导致解码失败。我一查我的数据库是客户端编码: ('UTF8',)
支持的编码: [('UTF8',)]
服了
用户头像
小鱼不吐泡泡发表于 6个月前
@GBase用户31011:建议还是通过销售联系一下技术支持吧,大模型不一定准
用户头像
liaosnet发表于 6个月前
请核对版本号。。 3.6.3 与 S5.0.0实际上不同内核的版本。
GBase用户31011发表于 6个月前
@liaosnet:查询版本select version();命令查出来的
(single_node GBase8sV8.8 S5.0.0B58 build e6f7a10c) compiled at 2025-07-09 14:28:04 commit 0 last mr 901 on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
冰凤发表于 6个月前
静等期待
GBase用户31011发表于 6个月前
问题解决了,我们的数据库版本是single_node GBase8sV8.8 S5.0.0B58 build e6f7a10c,只需要连接pg数据的驱动就行,一会发文章
GBase用户31011发表于 6个月前
@GBase用户31011:文章20251111出,今天懒得写
用户头像
mittens发表于 2个月前
感谢分享
用户头像
mittens发表于 2个月前
感谢分享
用户头像
mittens发表于 2个月前
感谢分享
用户头像
mittens发表于 2个月前
感谢分享
用户头像
mittens发表于 2个月前
感谢分享