Проверка значения sql параметра
try:
text = message.text.split()
id = text[1]
c.execute(f"SELECT post_num FROM staff WHERE user_id = {id}")
rows = c.fetchone()
if not rows:
bot.send_message(-4654489442, 'другой текст')
elif rows == 9:
bot.send_message(message.chat.id, 'один текст')
вот отрывок кода, где по идее, если значение post_num равняется 9, то отправляется одно сообщение, а если его нет - то другое. Также хотел сделать другие значения с 1 по 9 поэтому их будет не 2. Помогите, пожалуйста
Ответы (1 шт):
Насколько я понимаю, Вас смущает множество elif. Если я вас правильно понял, то Вам надо сделать то, что в других языках называется "таблица эмуляции".
Например, я чуть преобразовал ваш пример и сделал словарь, где ключём является число от 0 до 9, а значением - метода вашего объекта bot (выше я просто для проверки кода сделал класс для такого объекта с одним методом).
В метод, как и у вас передаются обязательные аргументы по позиции, вы в списочном включении сможете "сгенерить" те аргументы, которые Вам нужны.
# просто эмулирую Ваш класс
class Bot:
def send_message(self,*args):
for i in args:
print(i)
bot = Bot()
# делаю таблицу эмуляции с вызовом
dc = {rows: [bot.send_message if j == 0
else [f'chat_id {j}', 'text for chat']
for j in range(2)] for rows in range(10)}
try:
text = 'Просто текст'.split()
id = text[1]
#c.execute(f"SELECT post_num FROM staff WHERE user_id = {id}")
rows = 9 # тут можно поиграться значениями 0 и 9
dc.get(rows)[0](*dc.get(rows)[1])
except:
raise