如何使用python在mysql中使用rowcount

新手上路,请多包涵

我们正在学生记录项目中实施数据库。我们想看看从表中删除一行前后,表中有多少行。我们尝试的代码如下:

 1  roll=5
2  m = mysql.connector.connect(host='localhost', database='student',user='root', password='')
3  cur = m.cursor()
4  rc = cur.rowcount
5  print("%d"%rc)
6  e=cur.execute("DELETE FROM `acc_details` WHERE roll_No=%s" % roll)
7  print("%d"%cur.rowcount)

在上面的代码中,第 4 行中的第一个行数给出 -1 作为输出,最后一行中的行数给出删除行后表中的行数。

为什么第 4 行的第一行计数输出 -1?

任何帮助都将是巨大的。

原文由 nishant 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

让你的代码包括

m.commit()
cur.close()
m.close()

如果您的代码没有这些,也许您可以添加它们。和你的前 4 行,我认为你应该添加

cur.execute('select * from 'table_name'')
cur.fetchall()

然后你就可以得到行数了。希望我的回答能帮到你。

原文由 cwl 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 psycopg2 的文档,cur.rowcount 返回受同一 cur 对象的最后一个 execute 方法影响的行数,因此它在第一次 cur.rowcount 调用时返回 -1,因为没有先前的 execute() 方法。

你可以试试这个-

 roll=5
m = mysql.connector.connect(host='localhost', database='student',user='root', password='')
cur = m.cursor()
cur.execute("SELECT * FROM `acc_details`")
cur.fetchall()
rc = cur.rowcount
print("%d"%rc)
e=cur.execute("DELETE FROM `acc_details` WHERE roll_No=%s" % roll)
print("%d"%cur.rowcount)

原文由 Pankhuri Agarwal 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题