cursor.rowcount赋予'int'对象不可调用的错误

时间:2011-07-04 09:02:45

标签: python

我从sqlite3数据库中选择了值并打印了cursor的计数。然后它给出了一个错误“'int'对象不可调用”

strq="select * from tblsample1"
self.con = sqlite3.connect('mydb.sqlite')
self.cur = self.con.cursor()
self.cur.execute(strq)              
print(self.cur.rowcount())

给出错误

  

TypeError:'int'对象不可调用

4 个答案:

答案 0 :(得分:15)

仔细阅读documentation! rowcount是一个属性,因此请将您的代码更正为:

 print(self.cur.rowcount)
  

Cursor.rowcount虽然是Cursor   sqlite3模块的类实现   这个属性,数据库引擎的   自己对决心的支持   “受影响的行”/“选择的行”是   古怪。


  

这包括SELECT语句   因为我们无法确定数量   查询生成的行直到所有   行被提取。


因此,您可以修改代码以使用fetchall

self.cur.execute(strq) 
data = self.cur.fetchall()
print len(data)

答案 1 :(得分:12)

print(self.cur.rowcount)

self.cur.rowcount是一个整数,而不是函数。

http://docs.python.org/library/sqlite3.html#sqlite3.Cursor.rowcount

修改

文档回答您的编辑:

  

根据Python DB API Spec的要求,如果没有对游标执行executeXX(),则rowcount属性为“-1”,或者最后一个操作的rowcount不能由接口“。

确定。”      

这包括SELECT语句,因为在获取所有行之前,我们无法确定查询生成的行数。

答案 2 :(得分:3)

错误消息说明了一切。不要调用rowcount值,只需访问它:

print(self.cur.rowcount)

答案 3 :(得分:0)

strq="select count(*) from tblsample1"
self.con = sqlite3.connect('mydb.sqlite')
self.cur = self.con.cursor()
rows = self.cur.execute(strq)              
print(row)