Это мой код:
import sqlite3
connector = sqlite3.connect("Database_1.db")
cursor = connector.cursor()
def Table_making():
cursor.execute("CREATE TABLE IF NOT EXISTS Tester(Tester_1 INT)")
def data_entry():
for x in range(1,10):
cursor.executemany("INSERT INTO Tester(Tester_1) VALUES(?)", x)
connector.commit()
cursor.close()
connector.close()
Table_making()
data_entry()
Как видите, я пытаюсь вставить диапазон чисел от (0,10) до Table_1, но постоянно сталкиваюсь с этой ошибкой:
TypeError: 'int' object is not iterable
Как я могу обойти эту ошибку и вставить диапазон чисел?
@zython да я в курсе, и все в порядке






второй аргумент executemany должен быть повторяемым (т.е. он будет выполнять цикл за вас):
def data_entry():
data = ( (i, ) for i in range(1, 10) )
cursor.executemany("INSERT INTO Tester(Tester_1) VALUES(?)", data)
....
стоит сделать. обратите внимание, что каждая запись во втором аргументе (при повторении) должна быть tuple. поэтому 1-кортеж (i, ) в генераторе data.
Ваш код показывает ошибку каждый раз, когда я меняю что-либо выше 10. Работают любые числа ниже 10.
Второй аргумент executemany - это итерация (для каждой строки для выполнения) итераций (для каждого параметра). Итак, правильный синтаксис:
cursor.executemany("INSERT INTO Tester(Tester_1) VALUES(?)", ((x,) for x in range(1, 10)))
cursor.close()
connector.commit()
вы говорите числа (0,10), но вставляете (1,10) в свой код. знаете ли вы, что диапазон (1,10) даст вам всего 9 элементов
>>> list(range(10) ... ) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]?