Ошибка SQLite3 Python
Помогите решить ошибку пожалуйста. Код:
def connect(obj: Union[types.Message, CallbackQuery]):
user_id = obj.from_user.id
cursor.execute('SELECT grup FROM Users WHERE id = ?', (user_id,))
result = cursor.fetchone()
if result is None:
print('none')
return result
groups = {'СВ-31': 'SV_31', 'СП-31': 'SP_31'}
def fetch_for_group(group_code):
cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = f'{group_code}__PN_n'")
row1 = cursor.fetchone()
return row1[0]
@dp.message_handler(text='ПН')
async def pn(message: types.Message):
result = connect(message)
for row in result:
if row in groups.keys():
info = fetch_for_group(groups[row])
await message.answer(info, reply_markup=il_1)
Код ошибки:
cursor.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = f'{group_code}__PN_n'")
sqlite3.OperationalError: near "'{group_code}__PN_n'": syntax error
Ответы (1 шт):
Автор решения: mrEvgenX
→ Ссылка
Вы что-то перепутали, когда пытались применить f-строки, не стали разбираться и что-то додумали сами, а теперь удивляетесь, что это не работает:)
https://python-scripts.com/f-strings
"SELECT `raspisanie` FROM `Schedule` WHERE `grup` = f'{group_code}__PN_n'"
именно это будет передано в исполнение. group_code не подставится никуда. Это окончательная строка.
Быть может вы имели ввиду это?
f"SELECT `raspisanie` FROM `Schedule` WHERE `grup` = '{group_code}__PN_n'"
А вообще - этот способ подвержен страшной уязвимости - SQL-инъекции.
Передавайте параметры правильно, тем более, вы прекрасно знаете, как их передавать, судя по коду вначале:
cur.execute("SELECT `raspisanie` FROM `Schedule` WHERE `grup` = ?", (f'{group_code}__PN_n', ))
Полезная ссылка: https://docs.python.org/3/library/sqlite3.html