Что может заставить итератор идти вперед в цикле, а затем назад?
Это код, который я использую для циклического обхода поля первичного ключа таблицы.Первичный ключ используется для заполнения начальных значений в отдельной таблице.
Для цикла:
for row in sampleDB.select_fromTable():
print row[0]
sampleDB.insert_toTable(row[0], 2.0)
Оператор вставки sqllite:
def insert_toTable(self, primaryKey, initial):
c = self.conn.cursor()
c.execute('insert into insert_toTable VALUES(?, ?)', (primaryKey, initial))
if c.rowcount == 1:
print "Updated row.\n"
else:
print "Row does not exist.\n"
self.conn.commit()
c.close()
Оператор выбора, которыйсоздает кортеж для цикла:
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_toTable) я получаю это явление:
0
Updated row.
1
Updated row.
0
Traceback (most recent call last):
sqlite3.IntegrityError: column urlid is not unique
Следующая итерация цикла должна быть с уникальным значением "2", а не с "0" ....
При необходимости могу предоставить больше разделов кода.