注册

dmPython驱动支持ipv6地址连接吗?

唐纳德·特浪建 2024/03/28 586 13

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:WIN10
【CPU】:64位
【问题描述】*:flask框架连接达梦数据库使用了sqlalchemy
sqlalchemy连接达梦需要dmPython作为驱动,按照文档提示把环境弄好了
python3.6.8
sqlalchemy
1.3.23
sqlalchemy-dm==1.1.10
ipv4源代码如下

def get_dm_session(sql_url=None): ''' 此方法用来获取数据库连接池的session DM_USER, DM_PASS, DM_HOST, DM_PORT,SCHEMA_NAME分别是用户、密码、地址、端口、模式名 :return: session ''' if sql_url is None: sql_url = 'dm+dmPython://{}:{}@{}:{}'.format(DM_USER, DM_PASS, DM_HOST, DM_PORT) # print('sql_url:{}'.format(sql_url)) 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() # 默认和用户名字一样的模式(数据库名字) session.execute(text(f"ALTER SESSION SET CURRENT_SCHEMA = {SCHEMA_NAME}")) return session

我如果把DM_HOST换成[2409::1111:1010.10.1]这样的ipv6地址,sqlalchemy这个源代码解析的没有错,我想是不是因为dmpython和sqlalchemy-dm的源代码中解析不对
ipv6版本代码

def get_dm_session(sql_url=None): ''' 此方法用来获取数据库连接池的session :return: session ''' if sql_url is None: # sql_url = 'dm+dmPython://{}:{}@{}:{}'.format(DM_USER, DM_PASS, DM_HOST, DM_PORT) sql_url = 'dm+dmPython://{}:{}@[2409:8034:5aff:200::18:9]:{}'.format(DM_USER, DM_PASS, DM_PORT) # print('sql_url:{}'.format(sql_url)) 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() # 默认和用户名字一样的模式(数据库名字) session.execute(text(f"ALTER SESSION SET CURRENT_SCHEMA = {SCHEMA_NAME}")) return session

提示如下错误

ValueError: invalid literal for int() with base 10: '8034:5aff:200::18:9:5237'

很明显dmPython和sqlalchemy-dm这个方言版本不支持ipv6地址的解析

回答 0
暂无回答
扫一扫
联系客服