Python mySQLDB执行成功还是失败

Python mySQLDB执行成功还是失败,python,flask,mysql-python,execute,Python,Flask,Mysql Python,Execute,我是PythonFlask的新手,正在尝试使用MySQLDB连接到数据库。但是,我无法确定如何检查游标执行的查询是成功还是失败。在下面的代码中,有人能告诉我如何处理if语句中的条件吗?c是指向数据库的游标,它正在成功连接,因此我将其从下面的代码中排除 qry = "SELECT count(*) FROM users where username = (%s)" % (username) try: x = c.execute(qry) #Is this correct? Doe exec

我是PythonFlask的新手,正在尝试使用MySQLDB连接到数据库。但是,我无法确定如何检查游标执行的查询是成功还是失败。在下面的代码中,有人能告诉我如何处理if语句中的条件吗?c是指向数据库的游标,它正在成功连接,因此我将其从下面的代码中排除

qry = "SELECT count(*) FROM users where username = (%s)" % (username)
try:
    x = c.execute(qry) #Is this correct? Doe execute command return a value?
    if <<*Check if the query executed successfully*>>:
        return 'Success'
    else:
        return 'Failure'
except Exception as e:
    return 'Failure'

您已经具备了检测所发布代码中失败的方法。如果查询出了问题,Python将引发一个异常,您可以捕获它。尽管值得注意的是,您永远不应该捕获一个简单的异常,并且您当然永远不应该隐藏该异常是什么;捕获相关的MySQLdb异常,例如MySQLdb.Error。

c.executeqry在您的情况下不会返回任何内容。所以,不能将其用于if语句

但是,您可以使用fetchall或fetchone检查查询是否有一些结果。它看起来像这样:

qry = "SELECT count(*) FROM users where username = (%s)" % (username)
try:
    c.execute(qry) #Is this correct? Doe execute command return a value?
    user = c.fetchone()
    if user:
        return 'Success'
    else:
        return 'Failure'
except Exception as e:
    return 'Failure'

这似乎是一件奇怪的事情。您要求的是计数,所以正常行为应该是返回值,当然?谢谢Daniel。这只是一个示例查询。想象一下,我将表名拼错为users而不是user。。。或者想象一个insert查询,我尝试插入一个空白用户名,而DB将用户名作为主键。因此,它将失败,我试图在返回中捕获查询执行是否成功。第二,insert上的任何错误都将被捕获,但零件除外。