【问题标题】:Why aren't the rows being deleted by this code ? ( Flask-SQLAlchemy )为什么这段代码没有删除行? (Flask-SQLAlchemy)
【发布时间】:2020-03-26 14:35:09
【问题描述】:

这是我的代码的一部分: 我正在尝试删除与条件教师 = 选择的学生匹配的所有行。 现在我知道这个查询是有效的。但是这些行并没有从表中删除?!?!

class Alert(db.Model):

    __tablename__ = "alerts"

    id = db.Column(db.Integer, primary_key=True)
    alert = db.Column(db.String(4096))
    CW_class = db.Column(db.String(612))
    instructor = db.Column(db.String(612))  #instructor = username !
    date = db.Column(db.String(612))
    importDate = db.Column(db.String(612))

input = request.form.get('student')
list = input.split('-')
action = list[0]
chosen_student = list[1]
delete_q = Alert.query.filter_by(instructor=chosen_student).delete()
msg = str(delete_q)
db.session.commit

当我运行此代码时,打印 delete_q will output '2',这是正确的:有 2 条记录符合选择条件 (instructor=chosen_student)。但是之后运行选择查询时,不会删除 2 行...

有人知道为什么吗?

【问题讨论】:

  • db.session.commit是一个方法,你需要调用它:db.session.commit()
  • 啊啊啊啊啊……太简单了!你会相信我为此苦苦挣扎了好几个小时吗?不断更改查询,但完全忽略了那些(简单)括号......非常感谢!
  • 不时发生在我们身上!

标签: python mysql flask flask-sqlalchemy


【解决方案1】:
db.session.commit()

(pay attention to parentheses)

您可以使用任何 linter(例如 pylint 或 flake8)来避免将来出现此类拼写错误。

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多