Есть небольшой чат - питон 3.8 с базой MySQL, все это на pythonanywhere лежит
Суть - пользователь создает запрос в базу, на выходе получает ответ.
Проблема -запросы могут перепутаться.
В базе две таблицы. Первая - база клиентов с ИД и запросом(4 столбца всего), вторая - информация на вывод.
Запрос в базу состоит из трех параметров - день, место, вариант.
Пользователь выбирает день, место вариант - запрос пишется в три переменные и исходя из них в базе идет поиск ответа через SELECT
Так как эти переменные находятся в самом коде бота то выходит следующая ситуация:
П1 заходит в чат, выбирает день, место.. в это время П2 заходит, выбирает день.. П1 уже выбрал вариант, отправляет запрос - ошибка. Потому что П2 сбил переменную день..
Как это все должно быть устроено?
Вводимые данные пользователей забираю обработкой вводимой строки: ввел день - понедельник - в переменную Х записывается строка PN, допустим, и пишется в таблицу 1 в базе
Значит работать не просто с переменными день, место, вариант в отдельности, а со словарем, где ключ - id пользователя, а день, место, вариант - его значение (просто как список или же вложенный словарь). Соответственно при обновлении данных эти значения день, место, вариант заносятся именно под ключом данного пользователя.
вам придётся завести третью таблицу, таблицу состояний (или ещё одно поле в уже существующей таблице), состоящую из двух полей — id и state
например, когда пользователь начинает диалог с ботом, ему первым делом нужно выбрать день, записываем state=day
он отправляет сообщение, сверяем state, записываем в нужную таблицу выбранный день, меняем state на place и т.д.
Так-то можно после каждого запроса переменную поместить внутрь процесса подключения к базе и сразу же ее записывать в таблицу 1
Таблица 1 - ИД, день, место, вариант
Как я понимаю подключения к базе выстраиваются в цепочку
Но тогда, вырастает ожидание ответа