Задать вопрос
a777mp198
@a777mp198
Python developer

Как генерировать поочерёдные номера для заказов через Telegram-бота?

как реализовать мою задумку:
У меня есть бот, с помощью которого можно оформить заказ. Заказ может формироваться из нескольких позиций (пользователь набирает корзину из нескольких позиций, после чего оформляет заказ). В PostgreSQL данные заказа заносятся следующим образом: 1 строка = 1 позиция корзины. Соответственно, "уникальный номер" заказа я формирую следующим образом: в первой функции, с помощью randint, в диапазоне от 0 до 1000 генерирую рандомный номер, после чего сохраняю его в машину состояний, и далее присваиваю каждой позиции в БД, по мере формирования заказа пользователем. Диапазон не большой потому, что когда заказ выдаётся клиенту - продавец изменяет статус заказа с "готов" на "выдан" с помощью inline-кнопки, и заказ удаляется из БД, опять же по этому "уникальному номеру". И вот в чем вопрос: можно ли генерировать как-то номера поочерёдно? Чтобы сначала шёл заказ №1, затем №2 и т.д.?
  • Вопрос задан
  • 306 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
a777mp198
@a777mp198 Автор вопроса
Python developer
Чтобы реализовать данную задумку, необходимо вместо randint сделать запрос в БД, получить последнюю запись по id, и получить номер заказа у этой последней записи. Далее, прибавить к данному номеру += 1 и присвоить результат в виде номера к новому заказу. Отрывок из кода:
cursor.execute('''SELECT order_number FROM orders WHERE id = (SELECT MAX(id) FROM orders);''')
result = cursor.fetchone()[0]
if result is None:
    result = 1
else:
    result += 1
order_number = result
await state.update_data(order_number=order_number)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы