@kreeplambor

Как редактировать записи в sqlite через python?

Пытаюсь добавить возможность добавления номера телефона в боте, не могу разобраться как редактировать поле номер_телефона.
db = sqlite3.connect('Товар.db', check_same_thread=False)
sql = db.cursor()
@bot.message_handler(commands = ['number'])
def Запрос_номер_телефона(message):
	zapros = sql.execute(f"SELECT Номер_телефона FROM Пользователи WHERE user_id = '{message.from_user.id}'") 
	number = sql.fetchone()
	print('number', number)
	if number is None:
		bot.send_message(message.chat.id, 'Хотите оставить номер телефона?', reply_markup = markup_reg1)
		if message.text == 'Оставить номер':
			bot.send_message(message.chat.id, 'Отправить номер из телеграм или написать?', reply_markup = markup_reg2)
			if message.text == 'Номер из телеграм':
				db.execute("UPDATE Пользователи Номер_телефона = ?", 
					(message.contact.phone_number))
			elif message.text == 'Ввести':
				bot.send_message(message.chat.id, 'Вводите')
				db.execute("UPDATE Пользователи Номер_телефона = ?",
					(message.text))
			db.commit()
			print(f'Номер пользователя {message.from_user.username} зарегистрировын')
		elif message.text == 'Нет': 
			bot.send_message(message_handler.chat.id, 'Хорошо')
	else: 
		bot.send_message(message.chat.id, 'Номер телефона уже зарегистрировын.')

bot.polling(none_stop = True, interval = 0)

bot.polling(none_stop = True, interval = 0)

Даже если поле "Номер_телефона" пусто всё равно выводит сообщение что номер уже зарегистрирован.
  • Вопрос задан
  • 302 просмотра
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Правильно ли я понимаю, у вас плоская таблица Пользователи, где каждому пользователю соответствует строка, у каждого пользователя есть атрибуты (колонки) user_name, user_id, Имя, Номер_телефона

Тогда в строке
db.execute("INSERT INTO Пользователи (Номер_телефона) VALUES (?)",
          (message.text))
вы пытаетесь добавить строку, но надо делать update уже ранее созданной строки, аналогично с update из предыдущего ветвления.
Фактически, вам надо оставить одну строку с update уже после всех if/elif, где вы выясняете за номер телефона, и передавать в эту строку полученное значение номера телефона (получено оно из телеграм или от пользователя - не важно).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы