我将MySQLdb/Python用于一个API项目,遇到了一个问题:
def activate_acct(act_link):
# connect
db = MySQLdb.connect(host=DB_HOST, user=DB_USER, passwd=DB_PASS, db=DB_NAME)
# create a database cursor
cursor = db.cursor()
try:
sql = """UPDATE users
SET activated = %s
WHERE activate_code = %s"""
cursor.execute(sql, (1, act_link))
db.commit()
return "Activated"
except Exception as e:
return e
查询的工作原理是,当找到activate\u代码时,activated被更改,dB被更新,我看到一条成功消息。问题是,如果activate\ u代码不存在和/或无效,我仍然会收到成功消息。你知道吗
如果在WHERE中找不到activate\ u代码,如何让此查询引发异常?
不改变任何内容的
UPDATE
语句仍然被认为是成功的。您告诉数据库在找到某个值的任何地方进行更改;该值在任何地方都找不到,因此更改在任何地方都没有进行。它完全按照你的要求做了。你知道吗如果要检查以确保进行了更改,可以使用the ^{} attribute of a cursor object :
在执行update语句后,当且仅当
WHERE
子句中的谓词匹配时,cursor.rowcount > 0
才为true。这意味着您的更新已成功。你知道吗与您的具体问题无关,我建议不要使用try,除非您的代码示例中显示了这一点。最好只包装一行,只捕获可以处理的错误。如果希望调用作用域处理错误,则在调用作用域中捕获错误(或在执行任何必要的日志记录/内务处理后在函数中重新引发错误),而不是抑制错误并返回异常对象。你知道吗
相关问题 更多 >
编程相关推荐