Python 为什么赢了';t(Flask-)SQL Alchemy是否在将属性标记为已修改后仍提交更改?

Python 为什么赢了';t(Flask-)SQL Alchemy是否在将属性标记为已修改后仍提交更改?,python,mysql,flask,sqlalchemy,flask-sqlalchemy,Python,Mysql,Flask,Sqlalchemy,Flask Sqlalchemy,我正在使用Flask SQLAlchemy并尝试执行一个简单的更新并提交到表中的一列 这是一个更大的应用程序的一部分,但所有给我带来麻烦的代码如下: from flask import Flask app = Flask(__name__) from sqlalchemy.orm.attributes import flag_modified from flask.ext.sqlalchemy import SQLAlchemy db = SQLAlchemy(app) class Sche

我正在使用Flask SQLAlchemy并尝试执行一个简单的更新并提交到表中的一列

这是一个更大的应用程序的一部分,但所有给我带来麻烦的代码如下:

from flask import Flask
app = Flask(__name__)

from sqlalchemy.orm.attributes import flag_modified
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

class Schedule(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    next = db.Column(db.DateTime)

    def bump(self, days=7, minutes=0, seconds=0):
        self.next += timedelta(days=7, minutes=0, seconds=0)
        flag_modified(self, 'next')    
    def __init__(self):
        self.next = datetime.now()

def update():
    schedule = db.session.query(models.Schedule).first()
    print(schedule.next)
    schedule.bump()
    db.session.commit()
    print(schedule.next)
当我调用
update()
时,我看到两个日期按预期打印出来(间隔一周)

当我检查数据库时,
next
仍设置为原始日期。
当我打开设置以回显SQL命令时,我只得到以下信息:

2015-10-13 16:52:26,076 INFO sqlalchemy.engine.base.Engine SELECT schedule.id AS schedule_id, schedule.next AS schedule_next 
FROM schedule 
 LIMIT %s
2015-10-13 16:52:26,076 INFO sqlalchemy.engine.base.Engine (1,)
在两个日期之间没有打印任何内容(当调用
commit()
时)。我似乎能够毫无困难地在应用程序中提交各种其他内容,但我似乎无法坚持这一点

我尝试导入
flag\u modified
并显式标记属性dirty,但仍然没有成功

我认为可能相关的一件事是在rqworker线程(使用python rq)中调用update函数

我不确定为什么这会阻止数据被持久化,但我想不出这段代码还有什么特别之处