Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/140: Рейтинг темы: голосов - 140, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 39

TypeError: cannot unpack non-iterable int object

25.07.2019, 16:00. Показов 26106. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день
Вот код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# -*- coding: utf-8 -*-
"""
This Example will show you how to use register_next_step handler.
"""
import constants
#!/usr/bin/python
 
# This is a simple echo bot using the decorator mechanism.
# It echoes any incoming text messages.
import sqlite3
import telebot
import constants
from telebot import types
 
#Подключение к базе
conn = sqlite3.connect('my.sqlite',check_same_thread=False )
#Создание курсора
c = conn.cursor()
#Функция занесения пользователя в базу
def add_user(userid,username,usersurname,userage):
    c.execute("INSERT INTO users (id,name,surname,aage) VALUES ('%s','%s','%s','%s')"%(userid,username,usersurname,userage))
    conn.commit()
#Вводим данные
id = ''
name = ''
surname = ''
age = ''
print('\n')
#Делаем запрос в базу
print("Список пользователей:\n")
 
c.execute('SELECT * FROM users')
row = c.fetchone()
#выводим список пользователей в цикле
while row is not None:
   print("id:"+str(row[0])+" Логин: "+row[1]+" | Пароль: "+row[2])
   row = c.fetchone()
 
 
 
 
 
API_TOKEN = constants.token
 
bot = telebot.TeleBot(API_TOKEN)
 
@bot.message_handler(commands=['commands'])
def send_welcome(message):
    bot.send_message(message.from_user.id, """
---- \n
     all commands \n
     - /help \n
     - /start \n
     - /reg \n
----
    """)
 
# Handle '/start' and '/help'
@bot.message_handler(commands=['help'])
def send_welcome(message):
    bot.reply_to(message, """\
    Hi, I'm healthy lifestyle bot. I help you to find any coaches & partners for your training""")
 
@bot.message_handler(commands=['start'])
def handle_start(message):
    c.execute("SELECT id, name, surname, aage FROM Users WHERE (id LIKE ?) ",
              (message.from_user.id,))
 
    for name, surname, aage in c.fetchone():
        print()
        print("Name: " + name)
        print("Surname: " + surname)
        print("Age: " + aage)
        print()
    user_markup = telebot.types.ReplyKeyboardMarkup(True)
    user_markup.row('Поиск пары')
    user_markup.row('Найти тренера', '', '')
    user_markup.row('Ближайшая открытая тренировка')
    bot.send_message(message.from_user.id, "Добро пожаловать..", reply_markup=user_markup)
 
@bot.message_handler(content_types=['text'])
def start(message):
 
    if message.text == '/reg':
        keyboard = types.InlineKeyboardMarkup();  # наша клавиатура
        key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes1');  # кнопка «Да»
        keyboard.add(key_yes);  # добавляем кнопку в клавиатуру
        key_no = types.InlineKeyboardButton(text='Нет', callback_data='no1');
        keyboard.add(key_no);
        question = 'Хочешь изменить анкету?';
        bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
        bot.register_next_step_handler(message, get_name);
 
 
 
    else:
        bot.send_message(message.from_user.id, 'для посмотра комманд введите /commands');
 
def get_name(message): #получаем фамилию
    global name;
    name = message.text;
    bot.send_message(message.from_user.id, 'Какая у тебя фамилия?');
    bot.register_next_step_handler(message, get_surname);
 
def get_surname(message):
    global surname;
    surname = message.text;
    bot.send_message(message.from_user.id, 'Сколько тебе лет?');
    bot.register_next_step_handler(message, get_age);
 
def get_age(message):
    global age;
    while age == 0: #проверяем что возраст изменился
        try:
             age = int(message.text) #проверяем, что возраст введен корректно
        except Exception:
             bot.send_message(message.from_user.id, 'Цифрами, пожалуйста');
             break;
    age = int(message.text)
    id = message.from_user.id
    add_user(id, name, surname, age)
    # закрываем соединение с базой
    c.close()
    conn.close()
    keyboard = types.InlineKeyboardMarkup();  # наша клавиатура
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes');  # кнопка «Да»
    keyboard.add(key_yes);  # добавляем кнопку в клавиатуру
    key_no = types.InlineKeyboardButton(text='Нет', callback_data='no');
    keyboard.add(key_no);
    question = 'Тебе ' + str(age) + ' лет, тебя зовут ' + name + ' ' + surname + '?';
    bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
 
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == "yes": #call.data это callback_data, которую мы указали при объявлении кнопки
         #код сохранения данных, или их обработки
        bot.send_message(call.message.chat.id, 'Запомню : )');
        key = telebot.types.ReplyKeyboardMarkup(True, False)
        key.row('1', '2')
        key.row("6", "7",)
 
        key.row('Back')
        send = bot.send_message(call.message.chat.id, '...', reply_markup=key);
 
    elif call.data == "no":
 
        bot.send_message(call.message.chat.id, 'Мне пофиг, будешь ' + name + ' ' + surname);
    if call.data == "yes1":  # call.data это callback_data, которую мы указали при объявлении кнопки
        bot.send_message(call.from_user.id, 'Как вас зовут?');
 
 
 
    elif call.data == "no1":
 
        bot.send_message(call.message.chat.id, 'Хорошо ' + name + ' ' + surname);
 
 
bot.polling(none_stop=True, interva
Вот ошибка
2019-07-25 15:52:53,639 (util.py:65 WorkerThread1) ERROR - TeleBot: "TypeError occurred, args=('cannot unpack non-iterable int object',)
Traceback (most recent call last):
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 69, in handle_start
for name, surname, aage in c.fetchone():
TypeError: cannot unpack non-iterable int object
"
Traceback (most recent call last):
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 158, in <module>
bot.polling(none_stop=True, interval=0)
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\__init__.py", line 389, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\__init__.py", line 413, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 108, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\six.py", line 693, in reraise
raise value
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 69, in handle_start
for name, surname, aage in c.fetchone():
TypeError: cannot unpack non-iterable int object


Помогите плз
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2019, 16:00
Ответы с готовыми решениями:

TypeError: 'int' object is not iterable
надо сделать так чтобы вывелось и не максимальное число и не минимальное a=int(input('write your numbet ')) b=int(input('write...

Ошибка cannot unpack non-iterable nonetype object
import pyautogui from PIL import Image from time import sleep pyautogui.FIALSAFE = True sleep(2) x, y =...

Ошибка 'int' object is not iterable
Программа должна сортировать элементы списка по неубыванию произведений цифр числа. На выходе выдает указанную в теме ошибку. Как фиксить? ...

6
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.07.2019, 18:44
Лучший ответ Сообщение было отмечено gtihon9 как решение

Решение

Цитата Сообщение от gtihon9 Посмотреть сообщение
TypeError: cannot unpack non-iterable int object
Вы получаете пустой список, который нельзя распаковать.
Потому что неверно передаете значение для подстановки в LIKE.
Гуглите правильный синтаксис LIKE.


Впрочем, нет - так тоже можно, но бессмысленно. Вы передаете точное значение, тогда как LIKE имеет смысл только для шаблонов. В любом случае, ваш список почему-то пуст.

Добавлено через 10 минут
... Дошло до меня.
Дело в fetchone(). Метод возвращает один единственный кортеж. Его нельзя распаковать в цикле.
Либо вам нужен fetchall, либо вы не понимаете что хотите получить.
1
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 39
25.07.2019, 19:15  [ТС]
Garry Galler, я ищу строку с айди как у человека, потом мне из этой строки нужно по отдельности достать данные
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.07.2019, 20:46
Лучший ответ Сообщение было отмечено gtihon9 как решение

Решение

Цитата Сообщение от gtihon9 Посмотреть сообщение
потом мне из этой строки нужно по отдельности достать данные
Тогда не нужно делать цикл.
Python
1
id, name, surname, aage = c.fetchone()
И все. Вы получите значения ровного одного кортежа.
P.S. id тоже будет возвращен, так как вы его запросили.

Цитата Сообщение от gtihon9 Посмотреть сообщение
я ищу строку с айди как у человека,
Тогда зачем LIKE, когда есть оператор равно ?
1
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 39
25.07.2019, 21:10  [ТС]
Garry Galler, Я понял спасибо, тогда еще один вопрос.
Python
1
2
3
4
    c.execute("SELECT * FROM Users WHERE (id = ?) ",
              (message.from_user.id,))
    FindUsers = c.fetchone()
    print(FindUsers)
как мне из полученной строчки по отдельности достать данные(отдельно имя, фамилию возраст)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.07.2019, 21:12
Цитата Сообщение от gtihon9 Посмотреть сообщение
как мне из полученной строчки по отдельности достать данные(отдельно имя, фамилию возраст)
Python
1
id, name, surname, aage = FindUsers
Я, кажется, начинаю повторяться? Или это вы?
1
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 39
25.07.2019, 21:19  [ТС]
Garry Galler, Да, я все понял, спасибо, нужно подтянуть мат часть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.07.2019, 21:19
Помогаю со студенческими работами здесь

TypeError: 'int' object is not subscriptable
i = l = z = 0 dlina = 0 for l in l: dlina=dlina+l*2 z=z+1 print(dlina, z) Ошибка:

TypeError: 'int' object is not subscriptable
a = int(input()) lat = lst = for i in range(a): lst.append(i) if int(i) &gt;= 4: lat.append(i) for i in...

TypeError: 'int' object is not callable
Начал изучать питон но столкнулся с проблемой. def d(): x=int(input(&quot;Введите: &quot;)) y=int(input(&quot;Введите: &quot;)) ...

TypeError: 'int' object is not subscriptable
a = b = n = int ( input()) n-=1 for i in range ( 0 , n ): a = int (input()) b = int (input()) for z in range (0 ,n ...

TypeError: 'int' object is not callable
Здравствуйте, интересует такой вопросик(вот код): def Fs(t,c,T): t0=c global Fs Fs=0.0 if 0&lt;=t&lt;1: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru