我有一个小python(3.64)脚本,可以在mysql db(10.1.26)中插入记录
import MySQLdb as mdb
...
for id in allids
...
cursor.execute("INSERT IGNORE INTO entity(id,name) VALUES (%s, %s)", (identifier, name))
标识符是一个整数,如 2832718610241077149
总是19位数。mysql字段为 int(25)
.
我使用循环insert语句,但只选择了1条记录(用mysql工作台检查)。那里的id与python中的标识符没有任何共同点,就像 2157483647
.
我发现,当我把db字段改为 varchar(25)
. 然后,所有的循环插入可以选择和ID是正确的。但我想这不是怎么做的。
1条答案
按热度按时间rbpvctlc1#
在mysql中,
INT(25)
仅指示显示宽度,如下所述。整数类型的字段不能存储25位宽的数字,整型字段总是32位宽,这就解释了您得到的结果-数字只是被切碎以适合32位。如果需要存储如此大的数字,请查看十进制或数字类型。
同时阅读本手册的这一部分,了解mysql将如何处理这种情况。