【发布时间】:2017-12-15 07:43:36
【问题描述】:
我有以下代码:
def post(self):
data = UserActivation.parser.parse_args()
check = UserConfirm.check_token(data['email'],data['token'])
activate_user = UserConfirm.activate_user(data['email'])
if check == False:
return {"message": "Invalid Token or Email Address"}, 400
else:
if activate_user:
return {"message": "Your account is now active"}, 201
else:
return {"message": "Error Activating Account"}, 500
被传递到用户模型中的UserConfirm 类:
def activate_user(email):
query_users = "UPDATE users SET activated=1 WHERE email=%s"
cursor.execute(query_users, (email,))
由于某种原因,代码不会失败,也不会更新数据库。我尝试按如下方式进行一些错误处理,以查看发生了什么:
try:
email = data['email']
query_users = "UPDATE users SET activated=1 WHERE email=%s"
cursor.execute(query_users, (email,))
return {"message": "done"}, 201
conn.commit()
except MySQLdb.Error as e:
error=e.args[0], e.args[1]
return {"message": error}, 500
我正在使用 Postman 将值发送到端点并且知道它工作正常,因为 check_token() 函数工作正常。奇怪的是查询没有抛出错误,也没有更新数据库。在 PhpMyAdmin 中,我可以毫无问题地写出上面的 SQL 查询。
另外,如果我故意输入错误的值,它仍然返回没有错误。
编辑我发现解决方案必须使用conn.close()
【问题讨论】:
-
可能事务还没有提交?尝试在 cursor.execute 之后添加 database_connection.commit(),以了解是否是这种情况。但这不是解决方案,只是诊断。
-
不会改变任何东西。很奇怪的错误。我对插入或选择查询没有这个问题
标签: python mysql mysql-python