import pyodbc import tkinter as tk from tkinter import ttk config = { 'Driver': '{SQL Server}', 'Server': 'localhost', 'Database': 'BMS', 'UID': 'sa', 'PWD': '20031224sql' } # 连接数据库 conn = pyodbc.connect(**config) # 创建表格 root = tk.Tk() table = ttk.Treeview(root) table.pack() # 获取数据并显示在表格中 def update_table(): cursor = conn.cursor() cursor.execute('SELECT * FROM Book') rows = cursor.fetchall() table.delete(*table.get_children()) for row in rows: table.insert('', 'end', values=row) # 创建按钮 button = tk.Button(root, text="Update Table", command=update_table) button.pack() root.mainloop()该代码执行后,点击Update Table 后无反应且进程退出,是为什么,给出修改后的代码
时间: 2023-12-06 11:03:36 浏览: 119
根据你提供的代码,问题可能是因为在执行 `update_table()` 函数时,没有提交对数据库的修改操作。可以在执行 `cursor.execute()` 后添加 `conn.commit()` 来提交操作。
此外,建议在使用完 `cursor` 后关闭它,可以在函数结尾添加 `cursor.close()`。
修改后的代码如下:
```
import pyodbc
import tkinter as tk
from tkinter import ttk
config = {
'Driver': '{SQL Server}',
'Server': 'localhost',
'Database': 'BMS',
'UID': 'sa',
'PWD': '20031224sql'
}
# 连接数据库
conn = pyodbc.connect(**config)
# 创建表格
root = tk.Tk()
table = ttk.Treeview(root)
table.pack()
# 获取数据并显示在表格中
def update_table():
cursor = conn.cursor()
cursor.execute('SELECT * FROM Book')
rows = cursor.fetchall()
table.delete(*table.get_children())
for row in rows:
table.insert('', 'end', values=row)
conn.commit()
cursor.close()
# 创建按钮
button = tk.Button(root, text="Update Table", command=update_table)
button.pack()
root.mainloop()
```
阅读全文