如何在SQLite中编辑和创建数据

-2 投票
1 回答
34 浏览
提问于 2025-04-14 18:19

我正在尝试用Python编辑和创建sqlite文件中的新数据。

def save_updated_data(self, entry_values, update_window, current_row_data):
    updated_row_data = {}
    for entry, (label, value) in zip(entry_values, current_row_data.items()):
        updated_row_data[label] = entry.get() if entry.get() else value

    row_index = self.data.index(current_row_data)
    self.data[row_index] = updated_row_data

    self.save_to_sqlite()
    messagebox.showinfo("Update", "Data updated successfully!")
    update_window.destroy()
    self.display_data()

def create_data_window(self, conn):
    cur = conn.cursor()
    cur.execute(f"INSERT INTO {table_name} VALUES ({','.join(['?']*len(new_data))})", new_data)
    conn.commit()
    messagebox.showinfo("Create Data", "Data successfully created.")

def save_created_data(self, entry_values, create_window):
    cur = conn.cursor()
    cur.execute(f"INSERT INTO {table_name} VALUES ({','.join(['?']*len(new_data))})", new_data)
    conn.commit()
    messagebox.showinfo("Create Data", "Data successfully created.")

def save_to_sqlite(self, conn, table_name, row_index, column_index, new_value):
    cursor = self.conn.execute('SELECT * FROM sqlite_master WHERE type="table" LIMIT 1')
    table_name = cursor.fetchone()[1]
    with self.conn:
        self.conn.execute(f"INSERT INTO {table_name} VALUES (NULL, ?, ?)", (row["column1"], row["column2"]))

        for row in self.data:
            self.conn.execute("INSERT INTO road_data VALUES (NULL, ?, ?)", (row["column1"], row["column2"]))

我不太明白为什么数据没有被保存。它给了我一些错误,比如参数错误。我刚开始学习编程,虽然我很喜欢这个过程,但有时候遇到这样的情况还是挺困难的。谢谢大家。

1 个回答

0

确保你正确地打开和关闭连接以及游标,如果你是初学者,这很可能是问题的原因。你的数据库是不是被锁住了?那你最好检查一下有多少个打开的游标指向你的数据库。

我不能确定这是不是问题,因为我没看到你的错误信息,但这也是我经常遇到的情况。

还有,你在调用:

save_to_sqlite - 在save_updated_data中没有传任何参数

save_created_data - 甚至连连接都没法传进去

create_data_window - 没有必要的'new_data'和'table_name'

如果你把这些函数里的所有代码都给我们看了,你可能需要了解一下全局变量和局部变量。这可能是你最大的麻烦。这个概念不难理解,但知道它非常重要。

撰写回答