local variable 'num' referenced before assignment

err0r

Новичок
Пользователь
Янв 9, 2022
42
4
8
Windows 7 (32bit)
aiogram, SQLite3

Во время написания кода я столкнулся с неизвестной мне ошибкой...
помогите пж разобраться


вот мой код:
Код:
@dp.message_handler(text=['📲Пробить'])
async def pr(message: types.Message):
    await bot.send_message(message.from_user.id, 'Введите user_id, username или номер телефона для проверки!')
    await info.prob.set()

Код:
@dp.message_handler(state=info.prob)
async def prob(message: types.Message, state: FSMContext):
    q = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}', (num))
    num = q[0]
    await bot.send_message(message.from_user.id, f'Информация:\n\nНомер: \n└ {num}\nТелеграм \n├ UserName: \n└ User_ID: {message.text}\nЕсли вы не получили нужную информацию, значить пользователя нет в нашей базе данных!\nПриглaсите его в нашего бота и повторите попытку!\n\n<a href="https://t.me/[Не важно что тут]?start=[И тут тоже)]">Дополнительную информацию можно получить тут</a>', parse_mode="HTML")
    await state.finish()


И мне выдает такую ошибку:

Код:
File "main.py", line 118, in prob
    q = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}', (num))
UnboundLocalError: local variable 'num' referenced before assignment
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Это ошибка появляется при попытке использовать переменную до объявления:
Python:
@dp.message_handler(state=info.prob)
async def prob(message: types.Message, state: FSMContext):
    q = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}', (num))  # Тут ты используешь переменную num
    num = q[0]  # тут ты первый раз задаешь переменную num
 

err0r

Новичок
Пользователь
Янв 9, 2022
42
4
8
Это ошибка появляется при попытке использовать переменную до объявления:
Python:
@dp.message_handler(state=info.prob)
async def prob(message: types.Message, state: FSMContext):
    q = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}', (num))  # Тут ты используешь переменную num
    num = q[0]  # тут ты первый раз задаешь переменную num
Спасибо большое)
Нашел решение)

и если не сложно.
теперь мне выдает это:
Код:
num = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}')
sqlite3.OperationalError: near "<": syntax error
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 650
472
83
Спасибо большое)
Нашел решение)

и если не сложно.
теперь мне выдает это:
Код:
num = sql.execute(f'SELECT num FROM users WHERE user_id = {prob}')
sqlite3.OperationalError: near "<": syntax error
не нужно использовать ф строки в запросах sql, это не безопасно, используйте синтаксис ? (знак вопроса)
а по поводу ошибки, возможно в prob не верная запись для sql запроса...
 

err0r

Новичок
Пользователь
Янв 9, 2022
42
4
8
не нужно использовать ф строки в запросах sql, это не безопасно, используйте синтаксис ? (знак вопроса)
а по поводу ошибки, возможно в prob не верная запись для sql запроса...
понял. спасибо)
буду разбираться)
 

Форум IT Специалистов