我从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'对象不可调用
答案 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)