Колба не вставляет значения в базе данных - PullRequest
0 голосов
/ 15 декабря 2018

Следующий код просит систему ввести каждый флажок, который был заполнен, а затем отображен.На странице отображения фактически отображаются новые зарегистрированные строки, но когда я делаю тот же код SELECT * FROM на моем терминале, система не показывает ни одного.Похоже, что база данных временная, потому что при перезапуске приложения фляги новые строки исчезают.

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 голосов
/ 15 декабря 2018

Прежде всего, не форматируйте строковый запрос - вы открываете свой код для SQL-инъекций .Вместо этого правильно настройте параметры вашего запроса:

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

Обратите внимание, как параметры запроса передаются отдельно, и используйте .executemany().

Что касается просмотра результатов запроса вставки, подтвердитеваша транзакция, чтобы сохранить изменения:

db.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...