插入SQLite数据库的行数为负数

时间:2012-01-29 20:54:39

标签: python sqlite insert rowcount

我正在尝试从SQLite代码向Python数据库中插入新记录。

  con = sqlite.connect(connectionString)
  cur = con.cursor()
  countOfNewItems = 0
  for ...
    try:
      con.execute("insert or ignore into items ...")
      countOfNewItems += cur.rowcount
    except:
      cur.close()
      con.close()
      print "Error when inserting item '%s' to database." % item
      exit(1)
  cur.close()
  con.commit()
  con.close()
  print "%d new items have been inserted." % countOfNewItems

我的代码报告插入记录的负数(-5141)。

因为我的数据库是空的,所以我可以找出通过命令行插入了多少条记录

select count(*) from items;

4866

你可以告诉我什么是错的。为什么这两个值不匹配以及它为什么是否定的?

2 个答案:

答案 0 :(得分:3)

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

  

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

  

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

确定。”

答案 1 :(得分:2)

尝试使用cur.execute代替con.executecur.rowcount然后为我返回1进行简单的插入。