• Телеграм бот. SQlite3 как выводить id?

    shabelski89
    @shabelski89
    engineer
    для начала сделать импорты:
    import sqlite3
    from sqlite3 import Error
    from time import sleep, ctime


    вызов всех SQL выражений сделать через функцию:
    def post_sql_query(sql_query):
        with sqlite3.connect('my.db') as connection:
            cursor = connection.cursor()
            try:
                cursor.execute(sql_query)
            except Error:
                pass
            result = cursor.fetchall()
            return result


    далее нужно создать таблицу в sqlite и в качестве primary key (именно он на уникальность определит) сделать id user:
    def create_tables():
        users_query = '''CREATE TABLE IF NOT EXISTS USERS 
                            (user_id INTEGER PRIMARY KEY NOT NULL,
                            username TEXT,
                            first_name TEXT,
                            last_name TEXT,
                            reg_date TEXT);'''
        post_sql_query(users_query)


    и функцию регистрации пользователя:
    def register_user(user, username, first_name, last_name):
        user_check_query = f'SELECT * FROM USERS WHERE user_id = {user};'
        user_check_data = post_sql_query(user_check_query)
        if not user_check_data:
            insert_to_db_query = f'INSERT INTO USERS (user_id, username, first_name,  last_name, reg_date) VALUES ({user}, "{username}", "{first_name}", "{last_name}", "{ctime()}");'
            post_sql_query(insert_to_db_query )

    а дальше вызывать её из хендлера:
    create_tables()  # вызываем функцию создания таблицы users
    
    
    @bot.message_handler(commands=['start'])
    def start(message):
        register_user(message.from_user.id, message.from_user.username,
                      message.from_user.first_name, message.from_user.last_name)
        bot.send_message(message.from_user.id, f'Welcome  {message.from_user.first_name}' )


    Думаю принцип понятен, далее можно со всеми данными так работать и да код так себе, но должен работать.
    Достаточно подробно?)
    Ответ написан
    8 комментариев