您好,匿名用户
随意问技术百科期待您的加入

网站不定时崩溃,日志中记录 sqlalchemy报错,Session's transaction has be...

0 投票

出错位置大概再这里 (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?
有没有谁能给一个关于插入数据在生产环境下的最佳实践?

用户头像 提问 2013年 9月12日 @ Warwick 上等兵 (286 威望)
分享到:

1个回答

0 投票

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

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

用户头像 回复 2013年 9月23日 @ Udyr 上等兵 (341 威望)
提一个问题:

相关问题

0 投票
1 回复 57 阅读
0 投票
1 回复 47 阅读
用户头像 提问 2012年 12月1日 @ Gemini 上等兵 (319 威望)
0 投票
1 回复 49 阅读
0 投票
1 回复 1 阅读
用户头像 提问 2014年 6月7日 @ Ziggs 上等兵 (345 威望)
0 投票
1 回复 70 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...