GBase 8s
其他
问答

windows客户端使用sqlalchemy-gbasedbt 查询GBASE 8s数据库出错

发表于2024-08-11 12:57:42126次浏览3个评论

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

【GBase版本】:

GBase8sV8.8_TL_3.5.1_x86

【操作系统】:

window10 22H2

【CPU】:

AMD Ryzen 7 4800H with Radeon Graphics            2.90 GHz

【问题描述】*:

按照官网sqlalchemy例子,执行查询程序崩溃退出:

 

不使用sqlalchemy,使用DbtPy写了个demo测试是可以正常执行查询的。

出错代码如下:

import os
if 'GBASEDBTDIR' in os.environ:
 os.add_dll_directory(os.path.join(os.environ['GBASEDBTDIR'],"bin"))

from sqlalchemy import MetaData, Table, Column, String, create_engine, BigInteger, Integer, CHAR
from sqlalchemy.dialects import registry
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

registry.register("gbasedbt", "sqlalchemy_gbasedbt.dbtdb", "GBasedbtDialect")
server_name = "ol_gbasedbt1210"

# 创建对象的基类:
Base = declarative_base()

# 定义User对象:
class ProductLineModel(Base):
    __tablename__ = 'product_line'

    id = Column("ID", BigInteger, primary_key=True)
    desc = Column("DESC", String)
    is_delete = Column("IS_DELETE", Integer, default=0)
    name = Column("NAME", String, unique=True)

ConStr = 'gbasedbt://gbasedbt:123456@192.168.65.38:9088/sysmaster;SERVER=ol_gbasedbt1210;DB_LOCALE=zh_CN.GB18030-2000;CLIENT_LOCALE=zh_CN.utf8;DELIMIDENT=y'
engine = create_engine(ConStr)

# 创建对象
# Base.metadata.create_all(engine)

# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)

# 创建session对象:
session = DBSession()

# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
results = session.query(ProductLineModel).first()
print(results)
session.close()

评论

登录后才可以发表评论
用户头像
路路路发表于 1年前
换个示例试试呢 :P
用户头像
liaosnet发表于 1年前
大多数示例,都没有在windows中测试这,基本上都是在linux上的演示。。
用户头像
liaosnet发表于 1年前
sqlalchemy-gbasedbt 仅支持sqlalchemy 2之前的版本。
最佳回答