Postresql, проблемы с вводом
id = '42586566'
mark = "5 4 5- П 2"
mark = mark.replace("П",'')
mark = mark.replace(" ",'')
lesson = "Алгебра"
mark = str(mark)
id = str(id)
try:
cursor.execute('ALTER TABLE lessons ADD COLUMN %s text' % (lesson))
except:
print("already added")
try:
mas = (lesson,id,mark)
cursor.execute("INSERT INTO lessons (userid, %s) VALUES ( %s , %s )",mas)
except:
bin = 1
print("Error2")
mas = (lesson,mark ,id)
cursor.execute("UPDATE lessons SET %s = %s WHERE userid=%s", mas) #проблема
Везде, где можно, отрабатывают except. И выводится следующее сообщение об ошибке:
psycopg2.errors.SyntaxError: syntax error at or near "'Алгебра'"
LINE 1: UPDATE lessons SET 'Алгебра' = '545-2' WHERE userid='425865...
Я не понимаю, где именно у меня нарушение синтаксиса/опечатка. Помогите пожалуйста корректно написать.
Ответы (1 шт):
Автор решения: asanisimov
→ Ссылка
Измените последние 2 строки:
mas = (mark ,id)
cursor.execute('UPDATE lessons SET "{}" = %s WHERE userid=%s'.format(lesson), mas)
Но, вообще говоря, имена столбцов лучше не делать русскими. Если необходимо в выборке получать колонки с отформатированным русским именем используйте as.
Пример:
SELECT algebra as "Алгебра"
FROM lessons