什么会导致迭代器在循环中向前,然后向后?在
这是我用来遍历表的主键字段的代码。主键用于在单独的表中填充初始值。在
For循环:
for row in sampleDB.select_fromTable():
print row[0]
sampleDB.insert_toTable(row[0], 2.0)
sqllite插入语句:
^{pr2}$创建要循环的元组的select语句:
def select_fromTable(self):
c = self.conn.cursor()
c.execute('select * from sampleTable')
c.close
return c
下面是一个示例表:
Primary Key Text
0 John
1 Sue
2 Bill
3 Tyler
在不使用insert语句的情况下运行循环将打印每个唯一键一次,但是如果我将调用添加到insert函数(insert\U toTable),则会出现以下现象:
0
Updated row.
1
Updated row.
0
Traceback (most recent call last):
sqlite3.IntegrityError: column urlid is not unique
循环的下一次迭代应该是唯一值“2”,而不是返回到“0”。。。。在
如果需要,我可以提供更多的代码部分。在
我怀疑这段代码的结果可能会根据使用的sqlite和python的具体版本而改变。在
注意,在
select_fromTable
方法中对c.close
的调用应该是c.close()
。这是一个幸运的错误,因为您不能在游标关闭后迭代查询的结果。但是,结果是循环中有两个打开的游标。在尝试将
select_fromTable
方法更改为:看看会发生什么。我相信它能解决你的问题。在
相关问题 更多 >
编程相关推荐