Задать вопрос
@Skrayvee

[AIOGRAM, SQLITE3] Как вывести всю базу одним сообщением?

Нужно все вывести одним сообщением
if adm_spis == spisbtns[0]:
		users = db.db_all()
		db_schet = len(users)
		users_list = {}
		for user in users:
			id = user[0]
			username = user[1]
			user_id = user[2]
			number = user[3]
			subscription = user[4]
			admi = user[5]
			blocked = user[6]
			ban = user[7]
		await msg.answer(f'<b>ВСЯ БАЗА ДАННЫХ </b>\n\n<i>Всего в базе: </i><code>{db_schet}</code>\n\n<b>ID: </b><code>{id}</code>\n<b>USERNAME: </b><code>{username}</code>\n<b>USER_ID: </b><code>{user_id}</code>\n<b>NUMBER: </b><code>{number}</code>\n<b>SUBSCRIPTION: </b><code>{subscription}</code>\n<b>BLOCKED: </b><code>{blocked}</code>\n<b>BAN: </b><code>{ban}</code>\n', parse_mode='html')


Выдаётся только последний элемент из базы:
ВСЯ БАЗА ДАННЫХ 

Всего в базе: 25

#ТУТ ДОЛЖНЫ ВЫВОДИТЬСЯ ОСТАЛЬНЫЕ ЭЛЕМЕНТЫ

ID: 25
USERNAME: YAR_Diana_Kondakova
USER_ID: 837344062
NUMBER: None
SUBSCRIPTION: 0
BLOCKED: 0
BAN: 0


Думал записывать в словарь, но потом не получится вывести с тегами html
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
deepblack
@deepblack Куратор тега Python
users_list ты его нигде не используешь. Зачем тогда он в коде?

for user in users:
      id = user[0]
      username = user[1]
      user_id = user[2]
      number = user[3]
      subscription = user[4]
      admi = user[5]
      blocked = user[6]
      ban = user[7]


А тут ты куда это присваиваешь? Проитерировал, а дальше что?
Естественно там будет только последний элемент.
Бери учебник по Питону и узучай.
Еще подумай что будет когда у тебя будет от нескольких сотен пользователей в БД.

UPD:
как правильнее записать, чтобы вывести все с тегами html

например так (допили под себя):
users = [
    ('Vasya', '12345', 'vasya@mail.ru'),
    ('Petr', '7654', 'Petr@mail.ru'),
    ('Irina', '142340385', 'irina@mail.ru'),
    ('Solomon', '981234125', 'solomon@mail.ru'),
]

with_markup = ' '.join(map(lambda x: f'name: {x[0]}\nid: {x[1]}\nemail: {x[2]}', users))

print(with_markup)
Ответ написан
if adm_spis == spisbtns[0]:
    users = db.db_all()
    db_schet = len(users)
    users_list = {}
    text_message = ''
    for user in users:
        id = user[0]
        username = user[1]
        user_id = user[2]
        number = user[3]
        subscription = user[4]
        admi = user[5]
        blocked = user[6]
        ban = user[7]
        text_message += f'<b>ID: </b><code>{id}</code>\n<b>USERNAME: </b><code>{username}</code>\n<b>USER_ID: </b><code>{user_id}</code>\n<b>NUMBER: </b><code>{number}</code>\n<b>SUBSCRIPTION: </b><code>{subscription}</code>\n<b>BLOCKED: </b><code>{blocked}</code>\n<b>BAN: </b><code>{ban}</code>\n\n'

    await msg.answer(f'<b>ВСЯ БАЗА ДАННЫХ </b>\n\n<i>Всего в базе: </i><code>{db_schet}</code>\n\n{text_message}', parse_mode='html')


Также в столбцах из которых вы берете переменные (subscription, admi, blocked, ban) можно изменить тип данных на bool для отображения False/True вместо 0/1 .

Если в будущем рассматриваете более обширный доступ администратора к БД, посмотрите в сторону django с его админкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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