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

如何通过Pony ORM在MySQL中存储超出int范围的信用卡号?

问题修复方案

问题原因

你定义的Credit_Card_number字段类型为Required(int),对应MySQL的INT类型,其最大值为2147483647,而待插入的信用卡号2221597849919620远超出这个范围,导致报错。

修复方案

方案一:将字段改为字符串类型(推荐)

信用卡号属于标识符,无需进行数值运算,存储为字符串更合理,还能兼容带前导零的卡号场景。

  1. 修改实体类定义:
IBAN = Required(str)
Credit_Card_number = Required(str)  # 把int改为str
CV2 = Required(int)
  1. 插入代码无需修改,直接使用JSON中的字符串值即可。

方案二:改用大整数类型

若必须存储为数值类型,可使用BigInt对应MySQL的BIGINT(最大值9223372036854775807):

  1. 修改实体类定义:
from pony.orm import Required, BigInt

IBAN = Required(str)
Credit_Card_number = Required(BigInt)  # 替换int为BigInt
CV2 = Required(int)
  1. 插入时将字符串转为整数:
Card(
    FirstName=i['firstName'],
    LastName=i['lastName'],
    Age=i['age'],
    IBAN=i['iban'],
    Credit_Card_number=int(i['credit_card_number']),  # 新增类型转换
    # 其他字段...
)

方案选择建议

优先选择方案一,因为信用卡号不会参与算术运算,字符串类型更贴合业务场景,同时避免数值处理可能带来的前导零丢失等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:45:40