ssh -f -N -L 4080:192.168.0.10:80 nameuser@88.77.66.55
Когда клиент общается с ботом, бот выдает ему список товаров, когда клиент выбрал товар бот собирает товар и данные клиента ( он ввел их заранее ) и отправляет определённому пользователю (Макс допустим). Предположим Макс уже общался с ботом.
# Тут не буду писать про форматиование, ниже покажу как лучше
# и прозрачнее форматировать такие участки кода
# Но здесь отмечу, что в питоне есть замечательные f-строки
# для более читабельной подстановки параметров.
# Вообще любые позиционные параметры, в отличии от именованных,
# сегда сильно снижают читабельность, размазывая контекст необходимого внимания
# по коду.
last_time = self.client.execute('SELECT time_local FROM {} ORDER'
' BY time_local DESC LIMIT 1'.format(table_name))
# Здесь появляется непонятная переменная tag, которая никак не пояснена в вопросе:
self.last_time[tag] = last_time[0][0]
print(self.last_time[tag])
# А вот здесь снова нечитабельные и зачастую опасные позиционные подстановки
# среди которых ОЧЕНЬ опасное и мусорное экранирование, которое грозит нам
# потенциальными SQL-инъекциями.
# А ещё в контексте вашего кода одно и то же у вас называется
# двумя непохожими именами: tag и client_id. Для того, кто будет итать ваш код
# одинаковые вещи должны называться одинаково.
# Это, я считаю, наравне с форматированием, основная причина вашей ошибки тут.
table = self.client.execute('SELECT {} FROM {} WHERE client_id = \'{}\''
'AND time_local >= \'{}\' ORDER BY'
' time_local DESC'.format(table_fields,
table_name,
tag,
self.last_time[tag] - timedelta(seconds=5)))st_time = self.client.execute(f'''
SELECT time_local
FROM {table_name}
ORDER BY time_local DESC
LIMIT 1
''')
self.last_time[tag] = last_time[0][0]
print(self.last_time[tag])
time_5_seconds_ago = self.last_time[tag] - timedelta(seconds=5)
table = self.client.execute(f'''
SELECT {table_fields}
FROM {table_name}
WHERE
client_id = {str(tag)!r}
AND time_local >= {str(time_5_seconds_ago)!r}
ORDER BY time_local DESC
''')
def start_new_thread(function, args, kwargs=None): # real signature unknown; restored from __doc__
"""
start_new_thread(function, args[, kwargs])
(start_new() is an obsolete synonym)
Start a new thread and return its identifier. The thread will call the
function with positional arguments from the tuple args and keyword arguments
taken from the optional dictionary kwargs. The thread exits when the
function returns; the return value is ignored. The thread will also exit
when the function raises an unhandled exception; a stack trace will be
printed unless the exception is SystemExit.
"""
pass