检查错误 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('数据修改失败')
时间: 2023-06-10 10:05:05 浏览: 117
您的代码存在以下问题:
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}')
阅读全文