Как добавить запись в базу данных к авторизированному пользователю

Есть база данных с пользователями. Положим непосредственно сейчас некто авторизировался, выбрал несколько блюд и нажал на кнопку "добавить в избранное". Почему-то сейчас они записываются как новая запись в таблице, а мне бы хотелось, чтобы запись была добавлена ту же строчку, что и пользователь, в отведенную ему графу fav. Чтобы никого не путать, все остальные мои пробные пользователи были удалены. Ссылка на GitHub

@app.route('/favourites', methods=['POST','GET'])
def favour():
    if request.method == 'POST':
        list1 = request.form.getlist('row')
        str1 = ','.join([str(elem) for elem in list1])
        new_fav = User(fav = str1)
        db.session.add(new_fav)
        db.session.commit()
        return render_template('index.html', name=current_user.username)

Список продуктов База данных

Коллективным разумом решение проблемы было найдено вот так :

@app.route('/favourites', methods=['POST','GET'])
def favour():
    if request.method == 'POST':
        list1 = request.form.getlist('row')
        str1 = ','.join([str(elem) for elem in list1])
        con = sqlite3.connect('C:\\FFlaskApplication\\app\\database.db')  
        with con:
            cur = con.cursor()
            cur.execute('UPDATE user SET fav = ? WHERE username = ?',(str1,current_user.username))
        con.close()
        return render_template('index.html', name=current_user.username)

Ответы (1 шт):

Автор решения: Vladimir Afanasyev

Ну обновляйте через курсор обычным выполнением запроса.

  1. update_query = "Update _tableName set _tableValue = ? where [user id] = ?" - создаете шаблон запроса, ? - места, куда вы будете передавать значения в дальнейшем

  2. cursor.execute(update_query, (param1, param2)) - выполняете апдейт через курсор, инициализированный на вашем соединении.

Пример:

import sqlite3    
try:
    con = sqlite3.connect('C:\\fst\\database.db')
except Error as e:
    print(e)    
cursor = con.cursor()
query = '''UPDATE user SET fav = NULL WHERE id = 1'''
cursor.execute(query)
query = '''SELECT * FROM user'''
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
    print(row)
query = '''UPDATE user SET fav = '1,2,3' WHERE id = 1'''
cursor.execute(query)
query = '''SELECT * FROM user'''
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
    print(row)

Ответ:

(1, 'artemtvi', '[email protected]', 'ShurfLL1', None)
(2, 'artemtvi1', '[email protected]', 'ShurfLL1', None)
(1, 'artemtvi', '[email protected]', 'ShurfLL1', '1,2,3')
(2, 'artemtvi1', '[email protected]', 'ShurfLL1', None)
→ Ссылка