python MYSQL,检查条件或没有记录,然后插入新记录

问题描述 投票:0回答:1

下面的 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 mysql-python
1个回答
0
投票

首先,不要使用字符串格式来替换变量,而使用参数化语句。请参阅如何在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 查询来执行,但不会像这样清晰。

© www.soinside.com 2019 - 2024. All rights reserved.