如何更新最新的后sqlite3?

nzkunb0c  于 2022-12-13  发布在  SQLite
关注(0)|答案(1)|浏览(136)

我需要更新数据库中的最新条目。虽然查询在DB浏览器中可以正常工作,但在代码中无法工作。请告诉我是什么问题?

class MySQL:
    def __init__(self):
        self.connection = sqlite3.connect(file_db, check_same_thread=False)
        self.cursor = self.connection.cursor()
        self.add_bd()     
    def update_sell_price(self, sell_price):
        with self.connection:
            self.cursor.execute(
                f'UPDATE Deals SET sell_price={sell_price}  ORDER BY deal_id DESC LIMIT 1')

给出错误消息:sqlite3.OperationalError:靠近“订单”:语法错误

ohtdti5x

ohtdti5x1#

只有在SQLite是使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项构建的情况下,UPDATE语句中的LIMIT和ORDER BY子句才可用,我怀疑您所使用的版本中没有这个选项。
而是使用标量子查询来获取最大deal_id

sql = """
  UPDATE Deals 
  SET sell_price = ?
  WHERE deal_id = (SELECT MAX(deal_id) FROM Deals)
"""
self.cursor.execute(sql, (sell_price,))

相关问题