如何访问受以下因素影响的行数:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'")
原文由 Tie-fighter 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何访问受以下因素影响的行数:
cursor.execute("SELECT COUNT(*) from result where server_state='2' AND name LIKE '"+digest+"_"+charset+"_%'")
原文由 Tie-fighter 发布,翻译遵循 CC BY-SA 4.0 许可协议
来自 PEP 249 ,通常由 Python 数据库 API 实现:
游标对象应响应以下方法和属性:
[…]
此只读属性指定最后一个 .execute*() 生成的行数(对于 DQL 语句,如“select”)或受影响的行数(对于 DML 语句,如“update”或“insert”)。
但要小心——它接着说:
如果没有对游标执行
.execute*()
,或者接口无法确定最后一个操作的行数,则该属性为-1。 [7]笔记:
DB API 规范的未来版本可以重新定义后一种情况,使对象返回
None
而不是 -1。
因此,如果您已经执行了您的语句 并且 它有效, 并且 您确定您的代码将始终针对相同版本的相同 DBMS 运行,那么这是一个合理的解决方案。
原文由 AndiDog 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
尝试使用
fetchone
:result
将包含一个元组,其值为COUNT(*)
。所以要找到行数:或者,如果您想一举完成:
附言。尽可能使用参数化参数也是一个好习惯,因为它可以在需要时自动为您引用参数,并防止 sql 注入。
参数化参数的正确语法取决于您的 python/数据库适配器(例如 mysqldb、psycopg2 或 sqlite3)。它看起来像