Проверка пользователя в наличии БД sqlite3 в telebot

System

Новичок
Пользователь
Мар 11, 2022
14
0
1
Написал код для проверки пользователя в БД:
Python:
def user_exists(self, chat_id, username):
        with self.connection:
            result = self.cursor.execute("SELECT * FROM `userchat` WHERE `chat_id` = ? and 'username` = ?", (chat_id, username,)).fetchmany(1)
            return bool(len(result))
Python:
if message.chat.type == 'private':
            if not db.user_exists(message.from_user.id,message.from_user.username,):
                db.add_user(message.from_user.id,message.from_user.username,)
                bot.send_message(message.chat.id, 'Ви були добавлені в базу даних.')
Хотелось бы спросить: как можно коректно объеденить два условие для проверки пользователя `chat_id` = ? и 'username` = ?"
Не могу понять как синтаксически записать
 

Selez

Новичок
Пользователь
Мар 11, 2022
11
3
3
Ты уже объединил проверку на два значения при помощи оператора AND.

Твою функцию можно улучшить и слегка упростить.
Python:
def user_exists(self, chat_id, username):
    with self.connection:
        return bool(
            self.cursor.execute(
                """SELECT EXISTS
                    (
                        SELECT * FROM `userchat`
                        WHERE `chat_id` = ? AND 'username` = ?
                    )""",
                (
                    chat_id,
                    username,
                ),
            )
        )
 
  • Мне нравится
Реакции: System

System

Новичок
Пользователь
Мар 11, 2022
14
0
1
Ты уже объединил проверку на два значения при помощи оператора AND.

Твою функцию можно улучшить и слегка упростить.
Python:
def user_exists(self, chat_id, username):
    with self.connection:
        return bool(
            self.cursor.execute(
                """SELECT EXISTS
                    (
                        SELECT * FROM `userchat`
                        WHERE `chat_id` = ? AND 'username` = ?
                    )""",
                (
                    chat_id,
                    username,
                ),
            )
        )
Забыл написать, что позже пишет ошибку:
sqlite3.OperationalError: unrecognized token: "'username` = ?"

Сейчас та же ошибка
 

System

Новичок
Пользователь
Мар 11, 2022
14
0
1
Ты уже объединил проверку на два значения при помощи оператора AND.

Твою функцию можно улучшить и слегка упростить.
Python:
def user_exists(self, chat_id, username):
    with self.connection:
        return bool(
            self.cursor.execute(
                """SELECT EXISTS
                    (
                        SELECT * FROM `userchat`
                        WHERE `chat_id` = ? AND 'username` = ?
                    )""",
                (
                    chat_id,
                    username,
                ),
            )
        )
Уже все работает, ошибка в `userchat`, два разных знака, спасибо!
 

Форум IT Специалистов