criminal表单中共有9个列名,要求在框中不论输入那个列名中的信息,都能查找到有关这行数据的所有信息,并显示在左边的框中
时间: 2024-03-14 20:44:44 浏览: 17
好的,以下是重写后的代码,可以实现根据输入的信息在数据库中查找并显示所有相关的罪犯信息:
```
def search_criminal(self, search_info):
# 打开数据库连接
db = pymysql.connect(host='localhost', port=3306, db='crime', user='qingying', password='123456')
cursor = db.cursor() # 获取游标
# 构造查询语句
sql = "SELECT * FROM criminal WHERE id LIKE '%{0}%' OR name LIKE '%{0}%' OR age LIKE '%{0}%' OR gender LIKE '%{0}%' OR address LIKE '%{0}%' OR crime_type LIKE '%{0}%' OR crime_time LIKE '%{0}%' OR punishment LIKE '%{0}%' OR release_time LIKE '%{0}%'".format(search_info)
# 执行查询语句
try:
cursor.execute(sql)
results = cursor.fetchall()
# 如果查询结果为空,则在GUI界面上弹出提示窗口
if len(results) == 0:
messagebox.showinfo('提示', '未找到相关数据')
else:
# 清空表格
for record in self.tree.get_children():
self.tree.delete(record)
# 显示查询结果
for row in results:
self.tree.insert('', 0, values=row)
except:
messagebox.showinfo('警告!', '查询失败,数据库连接失败!')
# 关闭数据库连接
db.close()
```
这个函数接收一个参数`search_info`,即在框中输入的搜索信息。在函数内部,首先构造一个SQL语句,其中使用`LIKE`关键字实现模糊查询,可以匹配所有列中包含输入信息的行。然后执行查询语句,并根据查询结果在GUI界面上显示查询结果。需要注意的是,这个函数的实现适用于所有列信息都是字符串类型的情况,如果有其他类型的列信息,需要根据具体情况进行调整。