Return 行在 UPDATE 序列中更改

Return rows changed on UPDATE sequence

我正在尝试 return 我的 UPDATE 序列中使用了哪些行,以检查它是否实际更新了任何内容或它尝试更新了一个不存在的行,但我无法获取实际的行 returned

在询问朋友和查看其他文章后,我尝试使用他们提供的方法,例如使用 sqlite3 的 rowcount 方法,以及 execute 函数中的 RETURNING 语句,但都抛出 AttributeError 和SQLError,分别。

def set_reason(guild: str, warn_id: int, reason):
    warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild", {'reason': reason, 'id': warn_id, 'guild': guild})
    return warns.fetchone()

正在尝试使用 RETURNING 语句:

warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild RETURNING warns.*", {'reason': reason, 'id': warn_id, 'guild': guild})

我得到 apsw.SQLError: SQLError: near "RETURNING": syntax error

并尝试使用 rowcount 方法:

warns.execute("UPDATE warns SET reason=:reason WHERE id=:id AND server=:guild", {'reason': reason, 'id': warn_id, 'guild': guild}).rowcount()

我收到“AttributeError: 'apsw.Cursor' 没有属性 'rowcount'`

根据this APSW docs pagechanges()方法在连接对象上,而不是光标对象上。

请参阅 this answer 直接查询 SQL 以获取相同的信息。请关注 link 以获取有关该功能的更多详细信息。如果不清楚,您只需执行 SELECT changes() 并像任何其他单结果查询一样检索结果。