为了账号安全,请及时绑定邮箱和手机立即绑定

有没有谁能给一个关于插入数据在生产环境下的最佳实践?

有没有谁能给一个关于插入数据在生产环境下的最佳实践?

临摹微笑 2023-04-16 22:18:52
出错位置大概再这里 (flask项目)def order_record():    id=request.args.get("id")    code=request.args.get("code")    r=Record()     r.id=id     order.code=code     db.session.add(order)     db.session.commit()     return jsonify(status=1)sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (IntegrityError) PRIMARY KEY must be unique原因感觉是当数据提交的时候因为网络的问题或者用户的问题提交了多次相同的数据导致了unique的错误。但是我好奇的是日志里会重复报告上面这个错误描述很多次几十次甚至几百次。解决这个问题,貌似只要再写入的时候确认是否已经存在就可以了,但是我不太理解的是什么日志中会一直重复报这个InvalidRequestError错误。另外。关于上面这断代码,除了写入前先select以下之外,有没有更优美一点的做法? try catch?
查看完整描述

2 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

db.session.add(site)
try:
    db.session.commit()
except:
    db.session.rollback()

只要用try...except在except中rollback回滚事务就可以了!


查看完整回答
反对 回复 2023-04-20
?
侃侃无极

TA贡献2051条经验 获得超10个赞

PRIMARY KEY 要自增啊, 根本不需要用户传进来

插入记录以后将插入记录的ID返回给用户即可


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信