python - 无法在数据库中执行更新功能
问题描述
我的更新功能有点挣扎——它经常给我一个恼人的错误,我不知道如何解决。
基本上,我想要实现的是从条目小部件中获取数据,然后调用更新方法并将数据从条目小部件传递到数据库。
看法
self.update_employee_data = tk.Button(self.edit_employee_frame, text="Update", command=self.update_data)
def update_data(self):
if len(self.edit_employee_name.get() and self.edit_employee_surname.get() and
self.edit_employee_position.get()) == 0:
messagebox.showwarning("Missing Values", "Fill empty entries")
elif (self.edit_employee_age.get() and self.edit_employee_salary.get()) < 1:
messagebox.showwarning("Missing Values", "Fill empty entries")
else:
self.controller.update_employee_data(self.edit_employee_name, self.edit_employee_surname,
self.edit_employee_age, self.edit_employee_position,
self.edit_employee_salary, self.index)
self.edit_employee_frame.grid_forget()
self.main_frame.grid()
控制器
def update_employee_data(self, name, surname, age, position, salary, id):
self.model.update_employee_data(name, surname, age, position, salary, id)
模型
def update_employee_data(self, name, surname, age, position, salary, id):
connection = sqlite3.connect("employees_database.db")
cursor = connection.cursor()
cursor.execute("""
UPDATE employees
SET name = ? , surname = ?, age = ?, position = ?, salary = ? WHERE ID = ?
""", (name, surname, age, position, salary, id,))
connection.commit()
cursor.close()
connection.close()
错误
cursor.execute("""
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
我用于从员工表中添加/删除/读取数据的变量类型(我只是在某种程度上难以更新)
name
<tkinter.StringVar object at 0x000001F53E214730> <class 'tkinter.StringVar'>
surname
<tkinter.StringVar object at 0x000001F53E2147F0> <class 'tkinter.StringVar'>
age
<tkinter.IntVar object at 0x000001F53E2148B0> <class 'tkinter.IntVar'>
position
<tkinter.StringVar object at 0x000001F53E214970> <class 'tkinter.StringVar'>
salary
<tkinter.IntVar object at 0x000001F53E214A30> <class 'tkinter.IntVar'>
id
1 <class 'int'>
解决方案
该错误意味着(至少)第一个参数 ( name
) 不是绑定参数(如字符串或整数)所支持的类型。
看起来您正在使用 调用该函数self.edit_employee_name
,这似乎不是一个String
,因为它有一个get()
方法,也许是一个 TK 对象?
您应该将这些对象转换为字符串。
推荐阅读
- android - 不同手机上的不同字体大小
- python - 将 DatetimeIndex 转换为日期时间
- jquery - 将动画添加到 replaceWith() jQuery
- java - 如何重定向与应用程序中 url 上的任何错误文本不匹配的主页
- java - Java:优化处理与庞大数据集的多对多关系
- javascript - 如何根据用户角色限制由 Django 支持的前端 SPA 上的屏幕?
- artificial-intelligence - 硕士项目:视频处理和数据科学:在视频数据帧上寻找模式
- android - 在 android 应用程序中动态创建主题样式
- android - 发生错误时如何获得另一个可观察对象的响应?
- r - 从其他数据框中将列合并到 SummarizedExperiment