为什么我的代码无视我的条件?

时间:2018-12-19 21:44:39

标签: python

当我尝试插入数据库时​​,我的代码只是不考虑条件变量的变化。

def finalizarExames():
    if request.method == 'POST':
        Dados                   =   np.asarray(request.form.items())
        Cursor                  =   db.cursor()
        Identidade              =   randint(0, 1000)
        Diagnostico = 1
        Val_Apagar = 0

        for i in Dados:


            PuxaDados   = "SELECT valoresMin, valoresMax FROM valores_ref WHERE nomeExame = %s"
            Cursor.execute(PuxaDados, (i[0])) # Posteriormente, mudar para i[0]
            for Valores in Cursor.fetchall():

                if float(i[1])  <   Valores[0]:
                    Diagnostico = 0

                elif float(i[1])    >   Valores[1]:
                    Diagnostico = 2

                else: Diagnostico = 1

            InsereDados = """
            INSERT INTO 
                exames_realizados 
                (nomeExame, valores, diagnostico, identidade) 
            VALUES 
                (%s, %s, %s, %s)

            """

            Cursor.execute(InsereDados, (i[0], i[1], Diagnostico, Identidade))
            db.commit()

我想将变量“ Diagnostico”更改为2或0,但是即使我输入了更高/更低的值,它也只是插入了“ Diagnostico = 1”(默认值)。

1 个答案:

答案 0 :(得分:0)

您需要将INSERT查询移入循环,因此您需要使用每一行的Diagnostico值,而不仅仅是最后一行。

但是您可以将SELECTINSERT组合成一个查询,该查询在数据库中完成。

for i in Dados:
    InsereDados = """
        INSERT INTO exames_realizados (nomeExame, valores, diagnostico, identidade)
        SELECT nomeExame, %s,
            CASE WHEN %s < valoresMin THEN 0
                 WHEN %s > valoresMax THEN 2
                 ELSE 1
            END, %s
        FROM valores_ref
        WHERE nomeExame = %s
    """
    Cursor.execute(InsereDados, (i[1], i[1], i[1], Identidade, i[0]))
    db.commit()