注册

python_snow生成的BIGINT的id,出现查询返回id减1情况

秃头👦🏻 2025/11/18 78 1

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

SQL> select * from v$version; 行号 BANNER 1 DM Database Server 64 V8 2 8.4 3 企业版 4 DB Version: 0x7000d 5 03134284368-202xxxxxxxx-xxxxxxxx 6 Msg Version: 44 7 Gsu level(5) cnt: 0 7 rows got

【操作系统】:

cat /etc/os-release NAME="Kylin Linux Advanced Server" VERSION="V10 (Halberd)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)" ANSI_COLOR="0;31"

【CPU】:
【问题描述】*:问题为偶现,使用snow生成的id字段(int类型:生成的数字是19位)写入到dm之后,在DBeaver客户端查询id是 123(正确的),但是通过python代码查询出来的id变成了122(123-1)。 重新生成一个id 321, 通过python代码查询出来id是321(正确)。没有明显规律

查询请求端环境等信息
windows 10企业版
python 3.12.10
dmPython 2.5.22
sqlalchemy 2.0.44
sqlmodel 0.0.27
snowflake 1.0.2

服务器部署的也有该问题,服务器信息

uname -a Linux caas-test-uat-local-master-1 4.18.0-425.3.1.el8.x86_64 #1 SMP Wed Nov 9 20:13:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux cat /etc/os-release NAME="Rocky Linux" VERSION="8.7 (Green Obsidian)" ID="rocky" ID_LIKE="rhel centos fedora" VERSION_ID="8.7"

结构体信息

-- 「SCHEMA」."http_tools" definition CREATE TABLE 「SCHEMA」."http_tools" ( "created_name" VARCHAR(8188) NULL, "created_id" VARCHAR(8188) NULL, "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP NULL, "updated_name" VARCHAR(8188) NULL, "updated_id" VARCHAR(8188) NULL, "id" BIGINT NOT NULL, "name" VARCHAR(8188) NULL, CONSTRAINT CONS134241393 PRIMARY KEY ("id") ); CREATE UNIQUE INDEX INDEX33646423 ON 「SCHEMA」."http_tools" ("id");

生成id代码:

snow = snowflake.SnowflakeGenerator(random.randint(1, 100)) http_tools = HttpTools() http_tools.name = "xxxx" http_tools.id = snow.__next__()

数据写入和查询均使用sqlalchemy

demo:
id: 7396471529468551168 ,这个查询是ok的,
id: 7396470499397820417, 这个查询是7396470499397820416

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