Flask没有在DATABASE

时间:2018-12-14 22:23:14

标签: python mysql flask

以下代码要求系统输入已填写并显示的每个复选框。 显示页面实际上正在显示新注册的行,但是当我在终端上执行相同的代码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)

1 个答案:

答案 0 :(得分:2)

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

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

请注意如何分别传递查询参数和使用.executemany()

就看到插入查询的结果而言,提交事务以保留更改:

db.commit()