python - 返回在 UPDATE 序列上更改的行
问题描述
我正在尝试返回在我的 UPDATE 序列中使用的行,以检查它是否实际更新了任何内容或尝试更新不存在的行,但我无法获取返回的实际行
在询问朋友和查看其他文章后,我尝试使用他们提供的方法,例如使用 sqlite3 的rowcount
方法,以及执行函数中的 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'`
解决方案
根据此 APSW docs page,该changes()
方法在连接对象上,而不是游标对象上。
请参阅此答案以获取直接 SQL 查询以获取相同的信息。按照链接了解有关该功能的更多详细信息。如果不清楚,您只需SELECT changes()
像任何其他单结果查询一样执行和检索结果。
推荐阅读
- javascript - 在 JavaScript 的硬编码值中添加数据输入字段
- javascript - Safari 上的 Svg 问题
- java - 如何在 Java 中处理两个抽象类的需求?
- javascript - 我从 Jquery 开始,但效果不太好
- python - 使用 tsfresh 仅选择一定数量的顶级功能
- swift - 从多个框架中解决模棱两可的初始化程序
- kotlin - MPAndroidChart 点击图表上的监听器
- android - 在 if 语句中只激活一次动画
- java - 如何限制java HashMap的最大内存大小?
- php - 操纵购物车中的 woocommerc 价格