我试图返回更新序列中使用的行,以检查它是否实际更新了任何内容,或者它试图更新不存在的行,但是我在返回实际行时遇到了问题
在询问朋友和查看其他文章时,我尝试使用他们提供的方法,例如使用sqlite3的rowcount
方法,以及执行函数中的返回语句,但两者都分别抛出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()
正在尝试使用返回语句:
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 page,
changes()
方法在连接对象上,而不是游标对象上有关获取相同信息的直接SQL查询,请参见this answer。有关该函数的更多详细信息,请参见链接。如果不清楚,只需执行
SELECT changes()
并像任何其他单个结果查询一样检索结果相关问题 更多 >
编程相关推荐