我有一个小的python(3.64)脚本,可在MySQL DB(10.1.26 MariaDB)中插入记录
import MySQLdb as mdb
...
for id in allids
...
cursor.execute("INSERT IGNORE INTO entity(id,name) VALUES (%s, %s)", (identifier, name))
identifier是类似于2832718610241077149
的整数,并且始终为19位数字。
MySQL字段为int(25)
。
我用来循环插入语句,但我只选择了1条记录(已通过MySQL Workbench检查)。那里的id与Python中的标识符没有什么共同之处,就像2157483647
。
我发现,当我将DB字段更改为varchar(25)
时,它运行良好。然后可以选择循环的所有插入片段,并且ID也正确。但是我想这不是怎么做。
答案 0 :(得分:1)
在MySQL中,INT(25)
仅表示显示宽度as explained here。您没有一个能够存储25位宽数字的整数类型字段,一个INT字段将始终为32 bits wide,这说明了您得到的结果-该数字被切碎以适合32位
如果您需要存储这么大的数字,请查看DECIMAL or NUMERIC类型。
也请阅读this part of the manual,以了解MySQL如何处理这种情况。