def load_data4(sql): # 连接数据库 conn = pymysql.connect(host='localhost', user='root', password='szx030226', database="电信诈骗案件信息管理系统") # 创建游标 cursor = conn.cursor() try: # 查询数据 execute_sql(sql) # 获取查询结果 results = cursor.fetchall() # 清空Treeview中的所有行 treeview4.delete(*treeview4.get_children()) # 将查询结果添加到Treeview中 for row in results: treeview4.insert('', tk.END, values=row) except Exception as e: print("查询失败:", e) finally: # 关闭游标和连接 cursor.close() conn.close() def query_1(): 案件编号 = entry_27.get() # 执行SQL语句 sql = "SELECT * FROM 案件信息表 WHERE 案件编号='{}'".format(案件编号) load_data4(sql)这段代码哪里有问题,为什么报错
时间: 2024-02-10 13:06:30 浏览: 157
这段代码中的问题可能出现在`execute_sql(sql)`这一行。在代码中并没有定义`execute_sql()`函数,因此会出现`NameError`错误。建议将该行代码改为`cursor.execute(sql)`。此外,还需注意`entry_27`是否定义以及是否在查询语句中使用了正确的变量名。
相关问题
# 连接MySQL数据库 def execute_sql(sql): global cursor conn = pymysql.connect(host="localhost", user="root", password="szx030226", database="电信诈骗案件信息管理系统") # 创建游标 cursor = conn.cursor() try: cursor.execute(sql) conn.commit() print('执行成功') except Exception as e: # 发生错误时回滚事务 conn.rollback() print('执行失败:', e) finally: cursor.close() conn.close() def load_data(): # 连接数据库 conn = pymysql.connect(host='localhost', user='root', password='szx030226', database="电信诈骗案件信息管理系统") # 创建游标 cursor = conn.cursor() try: # 查询数据 cursor.execute("SELECT * FROM 案件信息表") # 获取查询结果 results = cursor.fetchall() # 清空Treeview中的所有行 treeview1.delete(*treeview1.get_children()) # 将查询结果添加到Treeview中 for row in results: treeview1.insert('', tk.END, values=row) except Exception as e: print("查询失败:", e) finally: # 关闭游标和连接 cursor.close() conn.close() # 显示查询结果 load_data()这段代码有什么问题吗
这段代码在函数 `load_data()` 中调用了 `load_data()` 自身,这会导致无限递归调用,最终导致程序崩溃。需要将 `load_data()` 函数调用从函数内部移动到函数外部,或者将其放在一个事件循环中。另外,代码中没有对异常情况进行详细处理,比如数据库连接失败等等,建议加上相应的异常处理机制。
import MySQLdb# 连接数据库conn = MySQLdb.connect( host='localhost', user='root', passwd='password', db='database_name')# 创建cursor对象cursor = conn.cursor()# 执行SQL语句cursor.execute("SELECT * FROM table_name")# 获取结果result = cursor.fetchall()# 输出结果for row in result: print(row)# 关闭连接conn.close()如果这样做我想让它一直监听怎么偶
如果你想让这段代码一直监听数据库并获取查询结果,可以使用一个循环来实现。以下是示例代码:
```python
import MySQLdb
# 连接数据库
conn = MySQLdb.connect(
host='localhost',
user='root',
passwd='password',
db='database_name'
)
while True:
# 创建cursor对象
cursor = conn.cursor()
# 执行SQL语句
cursor.execute("SELECT * FROM table_name")
# 获取结果
result = cursor.fetchall()
# 输出结果
for row in result:
print(row)
# 关闭cursor对象
cursor.close()
# 等待一段时间后再次执行
time.sleep(1)
# 关闭连接
conn.close()
```
以上代码会不断执行SQL查询,并输出查询结果,直到程序被手动停止。你可以根据需要修改查询的SQL语句,并调整循环中的等待时间。
阅读全文