Python MySQL 不更新字段或返回错误

标签 python mysql mysql-python

我有以下代码:

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()

最佳答案

这是一个疯狂的猜测,但可能你需要提交你的更改,像这样(假设 connMySQLdb.connect() 返回的对象):

    try:
        email = data['email']
        query_users = "UPDATE users SET activated=1 WHERE email=%s"
        cursor.execute(query_users, (email,))
        conn.commit()
        return {"message": "done"}, 201
    except MySQLdb.Error as e:
        error=e.args[0], e.args[1]
        return {"message": error}, 500

关于Python MySQL 不更新字段或返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47827850/

相关文章:

Python MySQL - MySQLdb - 字符串中的撇号中断条目

python - 如何在 Python 中从毫秒创建日期时间?

python - 一个 while 循环来向上和向下计数

python - 版本无关的 python 库应该去哪里?

Python mysql 连接器插入%s

python - “pip install MySQL-python”失败并显示 'IndexError'

python - 如何将参数传递给方法装饰器

java - 如何使用 Advanced Installer 将 MySQL 数据库附加到 Java 应用程序

mysql - MySQL 中的 SELECT DISTINCT 语句需要 10 分钟

php mysql WHERE子句错误