Как вытащить определенные значения из бд SQLite (Python)
У меня есть код простого телеграм-бота (использую Telebot) на Python 3.9
import telebot
import sqlite3
bot = telebot.TeleBot('token')
connection = sqlite3.connect('database.db', check_same_thread=False)
cursor = connection.cursor()
# ответ бота на команду /profile
@bot.message_handler(commands=['profile'])
def command_Profile(message):
uid = message.from_user.id
UserID = '\nID: ' + str(uid)
isUserAdmin = 'Администратор: ' # + значение из таблицы (true/false)
profile_message = 'Ваш профиль:\n' + userID + isUserAdmin # текст сообщения, которое отправит бот
bot.send_message(uid, profile_message)
bot.polling(none_stop=True)
Также есть база данных (SQLite), где в таблице users хранятся значения user_id (int, ID пользователя в телеграме) и isAdmin (bool, является ли пользователь администратором):
| id | user_id | isAdmin |
|---|---|---|
| 1 | 11111111 | 0 |
| 2 | 22222222 | 1 |
P.S. uid передается в таблицу в user_id, когда пользователь пишет /start. Этот кусок кода здесь не представлен.
У меня вопрос: как можно посмотреть, является ли пользователь администратором и как добавить полученное значение в isUserAdmin?
Впервые работаю с субд, буду благодарен любой помощи
Ответы (1 шт):
def get_db(uid):
conn = sqlite3.connect(db)
user = conn.execute(f'SELECT * FROM users WHERE user_id ={uid}').fetchone()
if user is None:
conn.close()
return None
else:
conn.close()
row = user[0]
user_id = user[1]
is_adm = user[2]
return row, user_id, is_adm
@bot.message_handler(commands=['start'])
def start(message):
row, user_id, is_adm = get_db(message.chat.id)
if is_adm:
bot.send_message(message.chat.id, f'Администратор: {user_id}')
выполняете запрос к БД - SELECT почитать.
в моём примере запрашиваются все данные имеющиеся в таблице users с условием (where) поиска по uid, после извлечения получается кортеж (tuple) с данными, обратится к элементу можно по индексу.
ну а дальше либо возвращаете все данные, либо те что требуются и применяете их там где нужно.