Flask没有在数据库中插入值

2024-04-24 22:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码要求系统输入每个已填充并显示的复选框。 显示页面实际上显示了新注册的行,但是当我在终端上进行相同的代码SELECT*FROM时,系统不显示任何行。数据库看起来是临时的,因为当我重新启动flask应用程序时,新行会消失。在

from flask import Flask, render_template, request
import pymysql

db = pymysql.connect("127.0.0.1", "root", "toor", "msg_test")

app = Flask(__name__)

app.config['SECRET_KEY'] = '31e1326344483068'

@app.route('/preenche', methods=['POST'])
def selecionarExames():
    if request.method == 'POST':
        cursor = db.cursor()
        for t in request.form.getlist('check'):
            sql = "INSERT INTO exames_realizados (nomeExame, valores) VALUES ('{}', 0)".format(t)
            cursor.execute(sql)
        v = "SELECT * FROM exames_realizados"
        cursor.execute(v)
        results = cursor.fetchall()
        return render_template('preenche.html', results=results)

if __name__ == '__main__':
    app.run(debug=True)

Tags: 代码fromimportappflaskdbrequest系统
1条回答
网友
1楼 · 发布于 2024-04-24 22:30:18

首先,不要设置查询的字符串格式-您正在向SQL injection attacks打开代码。相反,请正确地参数化查询:

sql = """
    INSERT INTO 
        exames_realizados 
        (nomeExame, valores) 
    VALUES 
        (%s, 0)
"""
cursor.executemany(sql, request.form.getlist('check'))

注意查询参数是如何单独传递的,以及.executemany()的用法。在

至于insert查询的结果,请提交事务以持久化更改:

^{pr2}$

相关问题 更多 >