Импорт данных из файла Excel в базу данных с использованием OpenPyxl и sqlite3 в Spyder - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь импортировать данные из файлов Excel .xlsx в базы данных .db, которые я создал с помощью sqlite3 и openpyxl, в Spyder. Мне разрешено использовать Панду при необходимости. Это для назначения, поэтому я не могу использовать возможные «более эффективные» методы, кроме тех, которые я упоминал выше. Моя проблема с фактическим импортом данных Excel в базы данных. Я настроил таблицы и заголовки столбцов, используя простые подсказки командной строки (CMD) в качестве крайней меры, но мне нужно показать код при отправке. Ниже мой код для этого, используя Spyder. (Я сохранил этот файл в правильной папке, в которой находятся файлы Excel и файл .db)

import sqlite3
import openpyxl
connection = sqlite3.connect('createdb_food.db')
cursor = connection.cursor()
wb1 = openpyxl.load_workbook('inspections.xlsx')
wb2 = openpyxl.load_workbook('violations.xlsx')

(затем я пишу sql_commands и выполняю для создания таблиц << works) (сейчас я пытаюсь импортироватьданные в соответствующие файлы ... Я покажу код для VIOLATIONS.xslx один, как меньше кода ... но оба импорта Excel одинаковы с разными переменными) </p>

sheet2 = wb2['violations']
values2 = []
for row in sheet2.iter_rows(min_row=2, max_row=906015, max_col=5):
    for cell in row:
        if len(values2) == 5:
            sql_command = """
            INSERT INTO violations(points, serial_number, violation_code, violation_description, violation_status)
            VALUES(values2[0], values2[1], values2[2], values2[3], values2[4]
            );"""
            cursor.execute(sql_command)
            values2 = []
        values2.append(cell.value)

[(ПРОВЕРИТЬРЕДАКТИРОВАТЬ НИЖЕ)] для изменения кода выше ^

Затем я сохраняю и фиксирую изменения и закрываю соединение.

connection.commit()
connection.close()

Я использую utf-8. Текущая ошибка в Spyder гласит: «self.ws._cells [(cell ['row'], cell ['column'])] = c || MemoryError".

Я был бы очень признателен за любую помощь. Спасибо!

[(РЕДАКТИРОВАТЬ)] : я изменил код на следующий ...

sheet2 = wb2['violations']
values2 = []
wb2_row_count = sheet2.max_row
wb2_col_count = sheet2.max_column
for row in sheet2.iter_rows(min_row=2, max_row=906015, max_col=5):
    if len(values2) == 5:
        sql_command = """
        INSERT INTO violations(?,?,?,?,?
        );"""
        cursor.execute(sql_command)
        values2 = []
    for cell in row:
        values2.append(cell.value)
    cursor.execute(values2)

СООБЩЕНИЕ ОБ ОШИБКЕ:

Файл "C: \ Users [имя] \ Anaconda3 \ lib \ site-packages \ openpyxl \ worksheet_reader.py", строка 139, в синтаксическом разборе для _, элемент в нем:

MemoryError

...