Задать вопрос
@NoPressF
Любит python

Вывод данных из бд в свой профиль telegram bot python?

class SQLighter:
	def __init__(self, database):
	    self.connection = sqlite3.connect(database, check_same_thread = False)
	    self.cursor = self.connection.cursor()
	    self.cursor.execute("CREATE TABLE IF NOT EXISTS stats (user_id INT, user_name TEXT, survived INT, infected INT)")
	def add_user(self, id, name, survived, infected):
	    #"""Добавляем значение"""
	    with self.connection:
	        return self.cursor.execute("""INSERT INTO `stats` (user_id, user_name, survived, infected) VALUES (?,?,?,?)""", (id, name, survived, infected))
	def get_nick(self, id):
	    #'''Эта функция позволяет извлекать нужное значение(в данном случае id) из таблицы stats'''
	    with self.connection:
	        return self.cursor.execute("SELECT user_id FROM stats WHERE id = ?", (id,)).fetchall()
	def set_fast(self, id):
	    #'''Эта функция позволяет устанавливать значение исходя из параметра id'''
	    with self.connection:
	        return self.cursor.execute("UPDATE stats SET infected=X WHERE id=?", (id))
	

sql_lighter = SQLighter("database.db")
sql_lighter.add_user(982543922, "Владимир", 1, 1)

Мой профиль:

bot.send_message(message.chat.id, f"Мой профиль\nМой ID: [{message.from_user.id}]\nМой Псевдоним: [{message.from_user.username}]\nМоё Ф.И: [{message.from_user.first_name} {message.from_user.last_name}]\nКоличество побед за выжившего: [{survived}]\nКоличество заражений за заражённого: [{infected}]")

Как мне из бд извлечь данные в свою профиль телеграмм бота?
Профиль - моя статистика
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ответы на вопрос 2
@o5a
Если удобнее, то можно получать данные в виде словаря (где ключи - названия столбцов). Тогда можно напрямую обращаться к нужному полю по имени.
class SQLighter:
  def __init__(self, database):
      self.connection = sqlite3.connect(database, check_same_thread = False)
      self.connection.row_factory = sqlite3.Row # этой строкой указываем, что результат получаем в виде словаря
      self.cursor = self.connection.cursor()
      self.cursor.execute("CREATE TABLE IF NOT EXISTS stats (user_id INT, user_name TEXT, survived INT, infected INT)")
...
  # и можно сделать такую функцию, возвращающую всю информацию пользователя
  def get_info(self, id):
      with self.connection:
          return self.cursor.execute("SELECT * FROM stats WHERE user_id=?", (id, )).fetchone()

sql_lighter = SQLighter("database.db")
sql_lighter.add_user(982543922, "Владимир", 1, 1)
# затем получаем весь словарь данных и можем использовать любые нужные поля из него
data = sql_lighter.get_info(982543922)
print(data)
print(data['user_name'])
print("Информация пользователя {}: имя: {}, survived: {}, infected: {}".format(data['user_id'], data['user_name'], data['survived'], data['infected']))
Ответ написан
@tshipenchko
Просто к слову, чем вам ORM не понравился)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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