You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3使用pymssql查询SQL Server序列current_value返回异常值

问题根因

你当前的转换逻辑确实存在错误,核心是字节序参数配置错误:

  • SQL Server的数值类型存储采用小端序(little-endian),你调用int.from_bytes时传入了byteorder="big"大端序参数,会把字节顺序完全倒置解析,自然得到完全不符合预期的超大数值。

临时修复方案

直接修改转换代码的字节序参数即可得到正确结果:

currentValue = int.from_bytes(cursor.fetchone()[0], byteorder="little")

最优解决方案(避免手动转换)

出现字节返回的本质原因是pymssql默认的TDS协议版本过低,没有正确识别sys.sequences中current_value的bigint数值类型,你可以从根源解决问题,无需手动做字节转换:

  • 建立数据库连接时指定更高版本的TDS协议:
conn = pymssql.connect(server='你的服务器地址', user='用户名', password='密码', database='库名', tds_version='7.3')
  • 或者在SQL查询中手动做类型转换,让驱动直接返回整数:
select cast(current_value as int) from sys.sequences where name = 'testSequence'

内容的提问来源于stack exchange,提问作者TheLovelySausage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:15:03