Xreymonster
@Xreymonster
аэаэ

Как реализовать получение уникального айди из базы данных?

Сразу к делу. Пытаюсь я для своего бота написать модуль таймеров, код примерно так выглядит:

@client.on(events.NewMessage(outgoing=True, pattern=f"{prefix}ntime"))
async def time(event):
    if timeprov() == "True":
        besedaid = event.chat.id
        aa = event.text.split(" ")
        times = aa[1]
        interval = int(aa[2])
        aa.pop(0)
        aa.pop(0)
        aa.pop(0)
        aaa = " ".join(aa)
        if is_int(times):
            pass
        elif times.lower() == "inf" or times.lower() == "infinity":
            pass
        else:
            event.edit("  incorrect info, try again")
            return
        if is_int(interval):
            pass
        else:
            event.edit("  incorrect info, try again")
            return
        cursor.execute(f"INSERT OR IGNORE into 'timers' ('chatid', 'times', 'interval', 'word') VALUES (?, ?, ?, ?)", (besedaid, times, interval, aaa,))
        conn.commit()
        await event.edit("✅  success")
        interval *= 60
        await sleep(interval)
        if times.lower() == "inf":
            while True:
                await event.respond(aaa)
                await sleep(interval)
        else:
            while times > 0:
                times -= 1
                await event.respond(aaa)
                await sleep(interval)


Значит так, бот отделяет нужную информацию по порядку и проверяет ее синтаксис, если синтаксис верный - добавляет данные в бд. После бот начинает цикл по данным, которые ему задали. Нужно сделать так, чтобы цикл этот можно было как-то остановить при надобности, я хотел сделать отдельный параметр в бд, который проверяется при каждом исполнении цикла, и если его ответ не подходит под условие - цикл срывается, но для такого нужно найти строку с данными по которым эта штука работает, заменить в ней значение, а уже после добавить проверку этого условия. БД выглядит так:

6432be6e0d521367501782.jpeg

id - первичный ключ, который генерируется автоматом
chatid - чат, в котором вызвали команду (в другом месте уже используется, к вопросу почти непричастно)
times - повторения
interval - интервал в минутах (конвертируется в секунды)
disable - отключить или выключить (то, что надо найти и проверить и получить возможность изменять)
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Ну, insert вы для себя открыли.

я хотел сделать отдельный параметр в бд, который проверяется

посмотрите, как пользоваться select-ом, да еще с входными параметрами, чтобы извлечь строку.

заменить в ней значение,

Ищем как пользоваться запросом c update, да еще с параметрами.
PS: Если еще посмотрите, как пользоваться delete, то CRUD комплект вы изучили, как взаимодействовать с базой.
PPS: cursor после выполнения insert может содержать свойство last insert id, но это не точно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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