簡體   English   中英

燒瓶 sqlalchemy。 提交不保存更改

[英]flask sqlalchemy. commit does not save changes

我的提交不會保存對數據庫的任何更改:

# project/models.py

from project import db
from sqlalchemy.dialects.postgresql import JSON

class Customer(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    clientid = db.Column(db.String(64))
    ...
    contextjason = db.Column(JSON)
# project/__init__.py

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)

from project.models import Customer
custObj = Customer.query.filter(Customer.custid == custid).first()
print(custObj.contextjason)  # works fine
custObj.contextjason = { 'foo':'bar', 'so':'be it'}
db.session.commit()

提交不會向數據庫提交任何更改。 實際上,我不知道它在后台做什么。

誰能告訴我為什么我沒有數據庫更新?

我可以告訴提交以某種方式記錄它在做什么(也許是 SQL 明智的)?

編輯:

使用 SQLALCHEMY_ECHO=True

我得到這個提交:

2018-05-23 16:42:17,102 信息 sqlalchemy.engine.base.Engine COMMIT

更新 JSON(B) 屬性時,我認為您可能需要將其標記為已修改

from sqlalchemy.orm.attributes import flag_modified

custObj.contextjason = { 'foo':'bar', 'so':'be it'}
flag_modified(custObj, "contextjason")
db.session.commit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM