下面的 if - else 语句可以简化为单个 if (cond1 OR cond2) 语句吗
条件 1 为
state
== 具体值(1 或 0),条件 2 为未找到记录
sql1 = "SELECT state FROM YO WHERE function = '%s' ORDER BY time DESC LIMIT 1" %(func)
if (not(myresult2)): #No records, do the insert
print ("doing insert %s - %s - %s" %(func,newstate,time))
cursor.execute(sql2)
else:
#check state . if matches do nothing
if (myresult2[0][0] != newstate):
print ("doing insert %s - %s - %s" %(func,newstate,time))
cursor.execute(sql2)
db.commit()
首先,不要使用字符串格式来替换变量,而使用参数化语句。请参阅如何在Python中的SQL语句中使用变量?
获取结果时,检查是否为空或者值不为
newstate
sql1 = "SELECT state FROM YO WHERE function = %s ORDER BY time DESC LIMIT 1" cursor.execute(sql1, (func,))
row = cursor.fetchone()
if not row or row[0] != newstate:
print ("doing insert %s - %s - %s" %(func,newstate,time))
cursor.execute(sql2)
也可以将其作为单个 SQL 查询来执行,但不会像这样清晰。