Как добавить запись в базу данных к авторизированному пользователю
Есть база данных с пользователями. Положим непосредственно сейчас некто авторизировался, выбрал несколько блюд и нажал на кнопку "добавить в избранное". Почему-то сейчас они записываются как новая запись в таблице, а мне бы хотелось, чтобы запись была добавлена ту же строчку, что и пользователь, в отведенную ему графу 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 шт):
Ну обновляйте через курсор обычным выполнением запроса.
update_query = "Update _tableName set _tableValue = ? where [user id] = ?"- создаете шаблон запроса,?- места, куда вы будете передавать значения в дальнейшем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)

