检查错误 try: cursor.execute(sql1) results = cursor.fetchall() if results: for i in results: print(f'姓名:{i[1]}\t,性别:{i[2]}\t,学号:{i[3]}') name = input('修改后的姓名:') sex = input('修改后的性别:') print(name) print(sex) # 执行修改操作的SQL语句,使用格式化字符串方式 sql2 = f"update table01 set name='{name}',sex='{sex}' where num='{del_id}';" cursor.execute(sql2) cursor.commit() except: print('数据修改失败')
时间: 2023-06-10 07:04:18 浏览: 39
这段代码似乎没有出现错误。它执行了一个SQL查询语句,并将结果存储在变量results中。如果结果不为空,它将逐个打印每个学生的姓名、性别和学号,并要求输入新的姓名和性别。最后,它会打印出新的姓名和性别。
相关问题
检查错误 try: cursor.execute(sql1) results = cursor.fetchall() if(results): for i in results: print(f'姓名:{i[1]}\t,性别:{i[2]}\t,学号:{i[3]}') name = input('修改后的姓名:') sex=input('修改后的性别:') sql2="update table01 set name='"+name+"',sex='"+sex+"';" cursor.execute(sql2) cursor.commit() except: print('数据修改失败')
您的代码存在以下问题:
1. SQL语句中update语句缺少where条件,这会导致将整个表的数据全部修改,造成严重的数据安全问题。
2. 字符串拼接时,应该使用格式化字符串方式,如f'{name}',而不是简单的字符串拼接。
3. 在使用execute函数执行SQL语句时,应该使用try-except语句排查可能存在的异常,并进行错误处理。
建议的修改代码如下:
try:
# 执行查询语句
cursor.execute(sql1)
# 获取查询结果
results = cursor.fetchall()
# 判断查询结果是否为空
if results:
for i in results:
print(f'姓名:{i[1]}\t,性别:{i[2]}\t,学号:{i[3]}')
name = input('修改后的姓名:')
sex = input('修改后的性别:')
# 执行修改操作的SQL语句,使用格式化字符串方式
sql2 = f"update table01 set name='{name}',sex='{sex}' where xxxxx;"
cursor.execute(sql2)
# 提交事务
cursor.commit()
else:
print('未查询到数据')
except Exception as e:
# 捕获异常,并进行错误处理
print(f'数据修改失败,异常信息:{e}')
sql1 = "SELECT * FROM table01 where num='searchid';" try: cursor.execute(sql1) results = cursor.fetchall() print(results) for i in results: print(f'姓名:{i[1]}\t,性别:{i[2]}\t,学号:{i[3]}') # print(i) except: print('数据查询失败')
这段代码是从名为 table01 的表里根据 num 进行搜索,并将搜索结果打印出来。其中 searchid 是变量,可以根据需要更改。查询结果会存储在 results 中,然后通过 for 循环将每一条数据按固定的格式打印出来,包括姓名、性别和学号。
阅读全文