更新记录

时间:2016-05-01 22:12:55

标签: sqlite flask sqlalchemy

我用Python,Flask编写了一个小型博客系统并制作了一个小模板,我可以使用CKEdit编辑帖子。我有五个帖子:

A, B, C, D, E

如果我想更新帖子A,一旦我进行了编辑,我实际上得到了编辑+3个帖子,在这种情况下,发布了D.帖子D的所有原始内容都被A和原版的编辑内容覆盖A的内容未被触及。

除最后一个帖子外,所有帖子都会发生这种情况。如果我想编辑D,我会编辑B,但我编辑E,帖子已成功编辑。

我认为这是数据库指针的一些问题,但不知道如何处理它。

更新代码如下:

def set_post(title, text, timestamp, page):
    if page != '': #Update
        data = Post.query.get(page)
        data.title = title
        data.text = text
        db.session.commit()
[..]

我已经检查过收到的“页面”变量是否正确(flash(页面)就在if句子之后)。

底层数据库引擎是SQLLite 3。

1 个答案:

答案 0 :(得分:0)

page值不是主键。主键.get()方法查询。要按其他列进行查询,请使用filter_by()。例如:

Post.query.filter_by(page=page).first()