首页 > 解决方案 > 在 Spyder 中使用 OpenPyxl 和 sqlite3 将数据从 Excel 文件导入数据库

问题描述

我正在尝试将 Excel .xlsx 文件中的数据导入我在 Spyder 上使用 sqlite3 和 openpyxl 创建的数据库 .db。如果需要,我可以使用 Panda。这是一个作业,所以除了我上面提到的那些之外,我不能使用可能的“更有效”的方法。我的问题是将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 并执行创建表 << 工作)(我现在尝试将数据导入到相应的文件中......我将显示 VIOLATIONS.xslx 的代码,因为代码较少......但两个 excel 导入都是不同变量相同)

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)

[(CHECK EDIT BELOW)]上述代码更改 ^

然后我保存并提交更改并关闭连接。

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[name]\Anaconda3\lib\site-packages\openpyxl\worksheet_reader.py”,第 139 行,解析 _,其中的元素:

内存错误

标签: pythonsqliteopenpyxl

解决方案


推荐阅读