2017-07-07 236 views
1

我們正在學生記錄項目中實現一個數據庫。我們希望在表中刪除行之前和之後在表中有多少行。 我們嘗試的代碼如下:如何在mysql中使用python使用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作爲輸出?

任何幫助都會很棒。

回答

0

有你的代碼包括

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

如果你的代碼沒有這些,也許你可以將它們添加。 和你的前4行,我想你應該添加

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

那麼你就可以得到rowcount.I希望我的回答可以幫助你。

+0

謝謝你的幫助 – nishant

3

根據psycopg2的文檔,cur.rowcount返回受相同cur對象的最後一個execute方法影響的行數,因此它返回-1作爲第一個cur.rowcount調用,因爲沒有以前的執行( ) 方法。

你可以試試這個 -

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) 
+0

謝謝你的迴應,但這給出了一個錯誤信息: mysql.connector.errors.InternalError:未發現結果 – nishant

+0

Dint注意到你正在使用mysql。請在答案中的代碼行號4處檢查編輯。現在應該工作。 –