当我尝试插入数据库时,我的代码只是不考虑条件变量的变化。
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”(默认值)。
答案 0 :(得分:0)
您需要将INSERT
查询移入循环,因此您需要使用每一行的Diagnostico
值,而不仅仅是最后一行。
但是您可以将SELECT
和INSERT
组合成一个查询,该查询在数据库中完成。
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()