Не выполняется полный запрос к БД

226
21 декабря 2017, 23:29

Flask приложение, MySQL субд. Он увеличивает счетчик id, но данные не подставляет из-за чего строк в таблице не прибавляется.

        file = request.files['img_data']
        text = request.form['text_data']
        title = request.form['text_title']
        filename = secure_filename(file.filename)
        cursor = mysql.connect().cursor()
        cursor.execute("SELECT MAX(id) FROM posts")
        filename = str(cursor.fetchone()[0]) + "." + get_ext(filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        cursor.execute('''INSERT INTO posts VALUE(NULL,"''' + title + "\",\"" + text + "\",\"" + filename + "\"," + '''NOW())''')

Соответственно в бд после запроса (второго, где insert) ничего нет, но если прописать вручную то такая штука (огромная разница между id, хотя строк всего три):

В общем не могу понять почему не вставляются данные.

Строка запроса: INSERT INTO posts VALUE(NULL, "qwerty", "wertyui", "19.png", NOW()). Данные по-прежнему не вставляются, даже после mysql.connect().commit()

Answer 1

У вас, похоже, почему-то отключен автокоммит. При отключенном автокоммите все изменения нужно коммитить вручную через то же соединение, в котором изменения были внесены.

file = request.files['img_data']
text = request.form['text_data']
title = request.form['text_title']
filename = secure_filename(file.filename)
db_conn = mysql.connect()
cursor = db_conn.cursor()
cursor.execute("SELECT MAX(id) FROM posts")
filename = str(cursor.fetchone()[0]) + "." + get_ext(filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
cursor.execute(
    'INSERT INTO posts VALUES (NULL, %s, %s, %s, NOW())',
    (title, text, filename),
)
db_conn.commit()

P.S. И не надо допускать SQL-инъекции тупым сложением строк при формировании SQL-запроса

READ ALSO
MySql No database selected в VB.NET с запросом SHOW FULL COLUMNS

MySql No database selected в VB.NET с запросом SHOW FULL COLUMNS

Имеем такой код получения полей из таблицы в базе данных

208
Нужно сделать проггу по C# [требует правки]

Нужно сделать проггу по C# [требует правки]

Известно, что в целочисленном массиве X=(x1,x2,

197