猿问

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

出错位置大概再这里 (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?


临摹微笑
浏览 173回答 2
2回答

浮云间

db.session.add(site) try:     db.session.commit() except:     db.session.rollback()只要用try...except在except中rollback回滚事务就可以了!

侃侃无极

PRIMARY KEY 要自增啊, 根本不需要用户传进来插入记录以后将插入记录的ID返回给用户即可
随时随地看视频慕课网APP
我要回答