当前位置: 首页 > article >正文

Windows下Python连接瀚高数据库(HGDB)踩坑记:SM3认证报错‘authentication method 13 not supported’的三种解法

Windows下Python连接瀚高数据库SM3认证报错的深度解决方案最近在Windows环境下用Python的psycopg2连接瀚高数据库(HGDB)时遇到了一个让人头疼的问题——SM3认证报错authentication method 13 not supported。这个问题看似简单实则涉及到底层库的兼容性问题。经过几天的折腾和反复测试我总结出了三种可行的解决方案每种方法都有其适用场景和潜在风险。1. 问题诊断与背景分析当你在Windows上使用psycopg2连接启用了SM3认证的HGDB时可能会遇到这个错误。根本原因在于psycopg2自带的libpq库不支持SM3认证方式。SM3是中国自主研发的密码哈希算法而标准的PostgreSQL客户端库通常不包含这种特殊认证方式的支持。错误信息中的method 13对应的是SM3认证方式。在PostgreSQL协议中不同的数字代表不同的认证方法方法编号认证方式3cleartext5md510scram-sha-25613sm3关键诊断步骤确认数据库服务器确实配置了SM3认证检查客户端psycopg2的版本和底层libpq的支持情况验证网络连接和基本认证参数是否正确2. 解决方案一修改数据库认证方式这是最直接的解决方法但前提是你有权限修改数据库的认证配置。2.1 修改HGDB的pg_hba.conf文件找到数据库服务器上的pg_hba.conf文件通常位于HGDB的数据目录下。修改相关行的认证方法# 原始配置可能类似这样 host all all 192.168.1.0/24 sm3 # 修改为md5认证 host all all 192.168.1.0/24 md52.2 重载数据库配置修改后需要让数据库重新加载配置# Linux下使用 pg_ctl reload # 或者直接连接数据库执行 SELECT pg_reload_conf();注意事项这种方法降低了安全性md5相比sm3更容易受到攻击某些合规场景下可能不允许修改认证方式修改前务必备份原配置文件3. 解决方案二替换libpq库这种方法保留了SM3认证通过替换psycopg2使用的libpq库来实现兼容。3.1 安装不带libpq的psycopg2首先卸载现有psycopg2然后安装源码版本pip uninstall psycopg2 pip install --no-binary :all: psycopg23.2 准备HGDB提供的libpq库从HGDB安装目录中获取以下文件路径可能因安装方式不同而异bin/libpq.dll lib/libpq.lib include/libpq-fe.h include/postgres_ext.h3.3 配置环境变量将HGDB的bin目录添加到系统PATH环境变量中。例如[Environment]::SetEnvironmentVariable(PATH, C:\Program Files\Highgo\HGDB\bin; [Environment]::GetEnvironmentVariable(PATH, User), User)3.4 验证pg_config确保pg_config能正确指向HGDB的安装pg_config --bindir pg_config --libdir3.5 替换psycopg2的库文件将HGDB的libpq.dll复制到Python的psycopg2目录Python安装目录\Lib\site-packages\psycopg2\潜在问题不同版本的HGDB可能提供不兼容的libpq更新psycopg2时需要重新替换库文件可能与其他PostgreSQL工具产生冲突4. 解决方案三完整编译psycopg2这是最彻底的解决方案但也是最复杂的。4.1 安装编译工具链需要安装Microsoft C Build Tools下载地址注意安装时勾选MSVC v142 - VS 2019 C x64/x86构建工具和Windows 10 SDK4.2 设置编译环境# 设置HGDB的路径 $env:PATH C:\Program Files\Highgo\HGDB\bin; $env:PATH $env:LIB C:\Program Files\Highgo\HGDB\lib; $env:LIB $env:INCLUDE C:\Program Files\Highgo\HGDB\include; $env:INCLUDE4.3 从源码安装psycopg2pip install --no-binary :all: psycopg24.4 验证安装import psycopg2 print(psycopg2.__file__) # 确认使用的是新编译的版本编译常见问题缺少头文件确保HGDB的include目录正确设置链接错误检查lib目录是否包含所有必需的库文件Python版本不匹配使用与Python版本对应的编译器5. 方案对比与选择建议三种解决方案各有优劣下面是详细对比方案难度安全性持久性适用场景修改认证方式简单较低需维护测试环境无严格安全要求替换libpq中等高一般生产环境不能修改数据库配置完整编译复杂高好长期使用需要完全控制个人建议如果是临时测试方案一最快如果是生产环境且不能改数据库方案二更稳妥如果需要长期维护方案三最可靠6. 常见问题与故障排除在实际操作中可能会遇到其他相关问题6.1 Unicode编码错误错误信息UnicodeEncodeError: ascii codec cant encode character...解决方法# 在cmd中执行 chcp 65001或者修改Python脚本开头import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)6.2 连接超时问题检查点防火墙设置数据库监听地址(pg_hba.conf)网络连通性测试命令telnet 数据库IP 端口6.3 密码特殊字符处理如果密码包含特殊字符建议使用连接字符串而非分开参数对密码进行URL编码from urllib.parse import quote_plus password quote_plus(复杂密码123) conn_str fhost192.168.1.1 dbnametest useradmin password{password} conn psycopg2.connect(conn_str)7. 性能优化与最佳实践成功连接后还可以考虑以下优化7.1 连接池配置from psycopg2 import pool connection_pool pool.SimpleConnectionPool( 1, 10, hostlocalhost, databasemydb, useruser, passwordpassword )7.2 批量操作优化# 低效方式 for item in data: cur.execute(INSERT INTO table VALUES (%s), (item,)) # 高效方式 cur.executemany(INSERT INTO table VALUES (%s), [(item,) for item in data])7.3 事务管理# 自动提交模式 conn.autocommit True # 或者手动控制 try: cur.execute(...) conn.commit() except: conn.rollback()经过多次实践我发现方案二替换libpq在大多数生产环境中最为可靠虽然初始设置稍复杂但后续维护成本低。特别是在需要同时连接多个不同版本的HGDB时可以为每个项目创建独立的虚拟环境分别配置不同的libpq版本。

相关文章:

Windows下Python连接瀚高数据库(HGDB)踩坑记:SM3认证报错‘authentication method 13 not supported’的三种解法

Windows下Python连接瀚高数据库SM3认证报错的深度解决方案 最近在Windows环境下用Python的psycopg2连接瀚高数据库(HGDB)时,遇到了一个让人头疼的问题——SM3认证报错"authentication method 13 not supported"。这个问题看似简单,实则涉及到底…...

对比体验在 Taotoken 上切换不同模型生成代码片段的差异

在 Taotoken 上切换不同模型生成代码片段的体验观察 1. 测试环境与模型选择 本次测试选取了 Taotoken 模型广场中三个擅长代码生成的模型进行对比体验,分别是 claude-sonnet-4-6、gpt-4-turbo-preview 和 deepseek-coder-33b。测试使用相同的 Python 环境与网络条…...

从静态到动态:AI生成可交互虚拟场景的技术原理与实践

1. 项目概述:从“模拟”到“创造”的AI新范式最近在AI生成内容领域,一个名为“sim”的项目在开发者社区里引起了不小的讨论。这个由simstudioai团队开源的项目,其核心并非我们常见的文生图或图生图工具,而是一个旨在构建“模拟世界…...

避坑指南:TMS320F28377D的TMU加速库,在CCS里到底该怎么正确配置与验证?

TMS320F28377D TMU加速库实战:CCS工程配置与性能验证全解析 在C2000系列DSP开发中,TMU(Trigonometric Math Unit)作为28377D独有的硬件加速模块,能显著提升三角函数和除法运算效率。但许多工程师反映,即便在…...

KeymouseGo 实战指南:跨平台键鼠自动化工具深度解析

KeymouseGo 实战指南:跨平台键鼠自动化工具深度解析 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo KeymouseGo…...

苹果手机怎么把照片抠图?2026年最全实战指南

最近很多朋友问我,苹果手机怎么把照片抠图。我之前也为这个问题纠结过,因为iPhone虽然系统很强大,但原生抠图功能其实相当有限。后来经过半年多的实测对比,我总结了一套最实用的解决方案,今天就分享给你。iPhone自带功…...

基于LangChain构建对话式智能体:从ReAct原理到工程实践

1. 项目概述:构建一个基于LangChain的对话式智能体最近在GitHub上看到一个挺有意思的项目,叫“conversational-agent-langchain”。光看名字,很多朋友可能就明白了,这是一个利用LangChain框架来构建对话式智能体(Conve…...

深度学习中激活函数的选择与应用指南

1. 激活函数的选择为何如此重要在深度神经网络训练过程中,激活函数就像神经元的"开关",决定了信息是否以及如何传递到下一层。2015年,Google的研究团队发现,在ImageNet分类任务中,仅将ReLU替换为Swish函数就…...

如何让旧款iPhone和iPad重获新生:终极iOS设备恢复与降级指南

如何让旧款iPhone和iPad重获新生:终极iOS设备恢复与降级指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit…...

ARS408毫米波雷达上车记:从安装位置到水平尺校准,手把手教你搞定俯仰角和滚转角

ARS408毫米波雷达实战安装指南:从工具准备到精准校准的全流程解析 当你第一次拿到ARS408毫米波雷达时,那个黑色的小盒子看起来并不起眼,但它的安装精度却直接决定了整个ADAS系统的性能表现。作为从业多年的汽车电子工程师,我见过太…...

大模型推理中的自我干预训练(InT)技术解析

1. 大模型推理中的自我干预训练概述在大型语言模型(LLM)的实际部署中,我们常常遇到这样的困境:模型在训练集上表现优异,但在真实场景的推理过程中却会出现逻辑断裂、事实错误或有害输出。传统微调方法就像给模型"…...

告别刷写失败!手把手教你用UDS 0x36服务搞定ECU程序升级(附CANoe实战报文)

破解UDS 0x36服务:ECU程序升级的实战避坑指南 当产线的设备指示灯突然由绿转红,当售后维修工位的诊断仪弹出"NRC 0x31"错误码,多少工程师的血压会瞬间飙升?程序刷写失败不仅是效率杀手,更是汽车电子开发中的…...

探索Nexa框架:Node.js响应式编程与高性能Web应用开发实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目,叫 Nexa,是 GitHub 上一个名为 KingLeoJr 的开发者主导的。乍一看这个名字,你可能觉得有点抽象,但如果你对构建现代化、高性能的 Web 应用后端感兴趣,特别是对…...

ROS2 Humble下用Python写Action服务端与客户端:一个模拟机器人移动的完整示例

ROS2 Humble下Python Action开发实战:从机器人状态机到多线程优化 在机器人开发中,异步任务处理是个永恒的话题。想象一下,当你需要让机器人移动2米的同时还要实时监测环境变化,或者在进行机械臂轨迹规划时允许用户随时取消当前操…...

非科班,我转大模型成功了吗

正式转码(开始刷算法题,学八股,做项目,找实习)到现在过去了13个月。由于之前完全没有大模型经验,根本找不到大模型对口实习我笑死,找的是cv,AI图像的实习,但歪打正着做了…...

别再让模型‘偏科’了!PyTorch实战:用BCEWithLogitsLoss的weight和pos_weight搞定二分类数据不平衡

破解二分类数据不平衡:PyTorch中BCEWithLogitsLoss的加权艺术 当你的二分类模型总是对少数类"视而不见",预测结果清一色偏向多数类时,这不是模型在偷懒,而是数据不平衡在作祟。医疗诊断中的罕见病例识别、金融领域的欺诈…...

国企领导:“现在都是 Agent自动开发了,你还在对话模式,太落后了!”我一点不慌:“这就去补,假期后见分晓!”领导露出满意的笑容。

马上假期了,我相信很多小伙伴肯定不会学习了,哦不,肯定不出去玩,要在家里学习 AI 对吧?(dog) 肯定的吧? 那在开始今天的内容之前,我也想问大家一下。 你平常更接近哪种…...

HPH内部构造大揭秘:三大系统配合节节通

今时,二零二六年四月三十日这一日,科技领域之内存在两件重大之事值得予以关注,其一乃是中国科学院所发布的“悟空”号暗物质卫星的最新成果,该成果揭示出了宇宙射线加速的关键机制;其二则是长三角区域的首台“华龙一号…...

让每一辆车快速拥抱AI!东软开启座舱AI Agent平权时代

2026年北京国际车展已释放出最明显的信号:座舱AI Agent正在加速落地。从用户体验侧来看,座舱交互系统最大的变化是从“会聊天”进化成“能干活”,座舱Agent变成了可精准了解用户需求,还能规划与执行的车内“私人助手”。这种进化&…...

VLC for Android:你的终极移动端万能媒体播放器解决方案

VLC for Android:你的终极移动端万能媒体播放器解决方案 【免费下载链接】vlc-android VLC for Android, Android TV and ChromeOS 项目地址: https://gitcode.com/gh_mirrors/vl/vlc-android 还在为手机无法播放某些视频格式而烦恼吗?或者经常遇…...

WWW 2026 利用知识图谱不但能够感知时间,还能“预判未来事件”?

01|研究背景:事件预测为什么需要“动态多模态”? 传统知识图谱通常关注结构化事实,例如: 主体 — 关系 — 客体 例如:Trump — LiveAt — White House 但现实世界中的事件并不是静止的。一个实体在不同时间…...

**大模型时代如何选对白酒?深度揭秘“晋善晋美”的技术创新与高性价比之道**

近年来,随着人工智能与大数据技术的飞速发展,白酒行业也悄然掀起了一场“数字化革命”。对于广大消费者而言,在信息爆炸的时代如何快速、精准地找到一家诚信白酒企业,并通过推荐白酒机构的权威背书,锁定一批高性价比白…...

CVE-2026-31431 Copy Fail:Linux 本地提权漏洞原理、影响面与排查修复建议

CVE-2026-31431 / Copy Fail 不是远程 RCE,攻击者需要先在目标机器上具备低权限代码执行能力。但这并不意味着它只是一个“小本地洞”。在容器节点、CI runner、共享开发机、跳板机、代码沙箱、Notebook、AI Agent 执行机这类环境里,“低权限代码执行”本…...

Vivado HLS 提供了 C++ 模板类 hls::stream<>

Vivado HLS 提供了 C 模板类 hls::stream<>&#xff0c;用于对流传输数据结构进行建模。 数据流在软件中&#xff08;以及在测试激励文件中进行 RTL 协同仿真期间&#xff09;作为无限队列来建模。在 C 中对数据流进行仿真 无需满足任意深度。数据流可在函数内部使用&…...

交大复旦 Bench2Drive-Speed:速度可控的自动驾驶评测基准

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号戳我-> 领取自动驾驶近30个方向学习路线作者 | Yuqian Shao 等编辑 | 自动驾驶之心本文只做学术分享&#xff0c;如有侵权&#xff0c;联系删文>>自动驾驶前沿信息获取→自动驾驶之心知识星球导语端到端自动驾驶&a…...

[具身智能-509]:全局混乱下的局部有序:不要用战术的勤奋掩盖战略的懒惰

“在一个全局混乱的系统中&#xff0c;局部的有序是奢望。”很多初创团队容易陷入一种“伪忙碌”的状态&#xff1a;产品每天都在迭代新功能&#xff0c;销售每天都在疯狂打陌生电话&#xff0c;代码写得飞快&#xff0c;办公室灯火通明。但这往往是“全局混乱”的体现——因为…...

基于stm32ARM库函数的IIR二阶巴特沃斯低通滤波器--附完整代码

在嵌入式系统中使用ARM CMSIS-DSP库实现高效IIR低通滤波器 &#x1f3af; 引言&#xff1a;嵌入式系统中的实时信号处理挑战 在嵌入式系统开发中&#xff0c;信号处理往往面临双重挑战&#xff1a;既要保证实时性&#xff0c;又要在资源受限的环境下运行。今天&#xff0c;我…...

DHT11温湿度传感器核心技术解析

DHT11是一款数字式温湿度复合传感器&#xff0c;通过单总线协议与微控制器通信。其核心工作原理基于电阻式湿敏元件和NTC热敏电阻&#xff0c;内部集成了8位微处理器&#xff0c;负责将模拟信号转换为数字信号并校准输出。 1. 传感器特性与技术参数对比 特性DHT11备注温度测量…...

【无标题】滴滴答答滴滴答答滴滴答答滴滴答答滴滴答答

委屈委屈委屈恶趣味企鹅21...

阿里云百炼微调完整实战:从数据到部署

阿里云百炼微调完整实战&#xff1a;从数据到部署 目录 什么是模型微调微调 vs RAG&#xff1a;如何选择环境准备训练数据准备创建微调任务超参数配置详解模型部署LangChain 调用微调模型模型评测常见问题总结 一、什么是模型微调 模型微调&#xff08;Supervised Fine-Tun…...