is not among the defined enum values. Enum name: None. Possible values 报错

问题复现

代码

 card_obj.msisdn = v.get("Msisdn"),
 card_obj.cardType = card_obj.cardType,  此字段为枚举字段
 db.session.commit()   
 如果通过对象.属性的方法进行更新就会报错
 通过翻阅源码  这种更新方式会造成吧要更新的值变成元组 ,然后如果用元组去取值的话就取不到,原因是枚举类型被改变成了字典类型
 self._valid_lookup[elem]
 上面就是他的取值方法 sqlalchemy 使用的中括号取值

报错

sqlalchemy.exc.StatementError: (builtins.LookupError) '('单卡',)' is not among the defined enum values. Enum name: None. Possible values: 云卡, 本地卡, 单卡, ..., 其他类型3
[SQL: UPDATE `BaseCardTable` SET update_time=%s, msisdn=%s, `cardType`=%s WHERE `BaseCardTable`.id = %s]
[parameters: [{'cardType': ('单卡',), 'msisdn': ('123524567323546',), 'BaseCardTable_id': 1}]]

解决办法

1.不修改源码  要不然构建会很麻烦
2.更改代码的修改方式
BaseCard.query.filter(BaseCard.iccId == k).update({
                BaseCard.cardType: '本地卡'
            })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值