SqlAlchemy(Flask + Postgres):commit()后数据库没有更新

时间:2016-03-10 12:45:54

标签: python postgresql sqlalchemy

我有一个带有json字段的模型。

class User(db.Model):

    __tablename__ = 'users'

    loginId         = db.Column(db.String(128),  nullable=False, primary_key=True)
    _password       = db.Column(db.String(128),  nullable=True)
    views           = db.Column(JSON, nullable=True)

我试图通过递增属性的值来更新视图字段。假设views中的当前值是{' Kids' :1}并且需要更新到{' Kids' :2},这是代码:

@mod_event.route('/view', methods=['POST'])
def view():
    try:
        params = request.json
        key = params['key']
        loginId = params['loginId']
        user = User.query.filter_by(loginId=loginId).first()
        if user.__dict__['views'].get(key,0) > 0:
            user.views[key] = user.views.get(key, 0) + 1
        else:
            user.views = cast(cast(user.views, JSONB).concat(func.jsonb_build_object(key, 1)), JSON)
        db.session.commit()

        response =  {"viewed" : viewed}
        return str(response), status.HTTP_202_ACCEPTED

if条件中的表达式会抛出此消息:

  

信息:sqlalchemy.engine.base.Engine:回滚

并且数据库未更新。

这里出了什么问题?谢谢你的帮助。

0 个答案:

没有答案