如何在SQLite中编辑和创建数据
我正在尝试用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'
如果你把这些函数里的所有代码都给我们看了,你可能需要了解一下全局变量和局部变量。这可能是你最大的麻烦。这个概念不难理解,但知道它非常重要。