sql_update_query = f"""UPDATE Home_work SET {For_lesons[Iug]} = {tuple(str(item) for item in CVB.split(','))} WHERE id_ = 1"""
cur.execute(sql_update_query)
sqlite3.OperationalError: near ")": syntax error
Samad_Samadovic, будет в разы более читаемо.
Далее, вам нужно просто передать одну строку как параметр запроса? Или у вас в строке несколько параметров, и вы хотите их разделить? Это совершенно разные вопросы, и вам ответили на второй.
На первый ответ проще: ('Hello world!', ) Запятая значима!
Vindicar, Мне нужно передать строку как параметр запроса, но с запятой я пробовал и у меня не получается.
Строка кода:
sql_update_query = f"""UPDATE Home_work SET {For_lesons[Iug]} = '{(CVB,)}' WHERE id_ = 1"""
Ошибка:
cur.execute(sql_update_query)
sqlite3.OperationalError: near "dfdsfdsfds": syntax error
Samad_Samadovic, стооооп, ну кто ж так делает! Избегайте втыкать строки прямо в тело запроса, это прямой путь к поломанным запросам и SQL-инъекциям.
cur.execute(f'UPDATE Home_work SET {For_lesons[lug]} = ? WHERE id = ?', (CVB, 1))
Вместо каждого ? sqlite поставит очередной элемент из кортежа. Но это работает только для значений, а не для имён столбцов. Вот почему я оставил For_lesons[lug] на месте, а не вынес его в кортеж.