Flask Sqlalchemy无错误但不更新sqlite3虚拟表

2024-09-24 02:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小烧瓶应用程序,我正在工作。它由一个搜索框组成,该搜索框使用Sqlalchemy之外的select语句对虚拟fts5表进行“全文搜索”

sqlstr = "SELECT * FROM items INNER JOIN Restaurants on Restaurants.rest_id = items.restaurant_id WHERE items MATCH '{}' ORDER BY item_rank DESC".format(q)
    crsr = conn.execute(sqlstr)
    search_data = crsr.fetchall()
    crsr.close()

用户获得结果,然后可以从结果中竖起菜单项,当出现这种情况时,我将他们带到“投票”烧瓶路线,记录竖起的拇指,并在我的分析表中记录日志。然后重定向到最后一页。这就是它变得不可靠的地方

db.session.query(items).filter(items.id==item_id).update({items.item_rank:items.item_rank +1})
        db.session.commit()
        ## RECORDING IT IN ANALYTICS
        voted_item = Analytics(user_id=str(current_user),action=str('vote'),item_id=item_id)
        db.session.add(voted_item)
        db.session.commit()

我的日志文件中没有任何错误。当我点击投票时,我收到了一条信息,说它成功了。我成功地将投票记录在一个单独的分析表中,但由于某些原因,它没有将投票记录在items表中

我试过一些东西。我返回sql语句更新items虚拟表,如下所示:

sqlstr = "UPDATE items SET item_rank = item_rank +1 where id = {}".format(item_id)
        crsr = conn.execute(sqlstr)
        crsr.close()

但我得到的是数据库被锁定的错误,我想是因为我在Sqlalchemy orm之外访问db…有什么想法吗?因为fts5虚拟表?从sql到orm的来回转换


Tags: iddb烧瓶sqlalchemysession记录items语句