import openpyxl import sqlite3 # читаем данные с файла excel def example(): """ Один из способов чтения значений :return: """ # создаем базу данных base = sqlite3.connect('testtovar.db') cur = base.cursor() base.execute("""CREATE TABLE IF NOT EXISTS product( ID_TOVAR INT PRIMARY KEY, TOVAR TEXT, ID_ISG TEXT, ISG TEXT, COUNTRY TEXT, BARCOD INT); """) base.commit() wb = openpyxl.reader.excel.load_workbook(filename="tovar.xlsx", data_only=True) sheet = wb.active # Обращаемся к нужной таблице делаем ее активной для чтения # sheet = book.worksheets[1] # таблицы можно получить из массива по индексу (индекс таблицы в файле) # Цикл по строкам начиная со второй (в первой заголовки) for row in range(1, 6, 1): # Объявление списка data = [] # Цикл по столбцам от 1 до 6 for col in range(1, 19079): # value содержит значение ячейки с координатами row, col value = sheet.cell(row, col).value # Список который мы будем добавлять data.append(value) # print(sheet['A' + str(col)].value, sheet['B' + str(col)].value, sheet['C' + str(col)].value, # sheet['D' + str(col)].value, sheet['E' + str(col)].value, sheet['F' + str(col)].value) cur.execute("INSERT INTO product VALUES (?, ?, ?, ?, ?, ?);", data[19079])
Подскажите пожалуйста с последней строчкой, я так понял мне нужно указывать индексы 19079 строчек что ли))если да, как это сделать, не писать же 19079 "дата" менял там индексы, переписывал по разному, изначально было так:
cur.execute("INSERT INTO product VALUES (?, ?, ?, ?, ?, ?);", (data[0], data[1], data[2], data[3], data[4], data[5]))
вставлял индекс 0, пишет -
Incorrect number of bindings supplied. The current statement uses 6, and there are 8 supplied.
индекс 6 туже ошибку выдает что и при индексе 7, я запутался товарищи
Возможно связь где то теряется с базой, может как то переписать код, поэтому не добавляется, хотел через 3 разных файла каждый со своей функцией, пока чет не смог связать как раз добавление, не видит данные с других функций, надо разбираться.