Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.12.2024
Сообщений: 15

Работа с БД

06.12.2024, 00:52. Показов 978. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане!
Столкнулся с проблемой, не знаю как реализовать.. Может кто знающий - подскажет:
Развлекаюсь с телеграм-ботами.
Создаю БД и заполняю ее.. Сделал админ панель сравнивая айди, который указан в отдельном файле, с тем, который приходит. Такто все работает, но хочу переделать. В БД есть отдельная колонка (условно, flag) со значениями 1 (админ) и 0 (обычный пользователь)

Вопрос: как грамотно реализовать функцию, которая будет прогонять по всей БД и выводить определенные данные из строчек, у которых флаг=1, например?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2024, 00:52
Ответы с готовыми решениями:

Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных
Работа в игровом проекте. Работа с php. Работа с платежными системами. Работа с базами данных. Стоимость: Договорная Срок...

Работа с строками,Работа со структурными типами данных,Работа с файлами!!
Помогите написать программы для следующих заданий....буду очень благодарен.) 1)Разработать программу которая удаляет все слова в...

Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления
Помогите пожалуйста найти летиратуру, в которой бы описывались работа с событиями,работа со всеми элементами управления(toolbox).И если...

5
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
06.12.2024, 07:01
эмм... select my_data from usere where flag=1 ?

зачем хранить юзеров и их положение? что если админа понизят, а простого юзера повысят - как ты это мониторишь?
0
0 / 0 / 0
Регистрация: 04.12.2024
Сообщений: 15
07.12.2024, 14:04  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
эмм... select my_data from usere where flag=1 ?
Попробую на днях подобные вариации..
Цитата Сообщение от Welemir1 Посмотреть сообщение
зачем хранить юзеров и их положение? что если админа понизят, а простого юзера повысят - как ты это мониторишь?
Ответ на первый вопрос находится во втором получается))))

Как раз с помощью БД я и смогу менять обычных пользователей на админов и наоборот (когда пропишу отдельный шматок кода для такой функции).
При запуске бота у меня берутся необходимые данные для БД, сравнивая, есть ли такой пользователь в БД (для исключения дублеров. См. функцию set_user) и автоматом выставляется флаг=0 (false), от флага зависит клавиатура, которая должна появляться.
Python
1
2
3
4
5
6
7
8
9
10
11
@router.message(Command("start"))
async def cmd_start(message: Message):
    # Получаем текущее время в часовом поясе ПК
    time_now = datetime.now().strftime('%D %H:%M')
    if str(message.from_user.id) == str(!!!!!!!!!!!!!!!*): #опишу ниже в посте
        await message.answer(f'Добро пожаловать, {message.from_user.first_name}!\n {message.from_user.id}\n', reply_markup=akh.admin_panel);
    else:
        await message.answer(f'Добро пожаловать, {message.from_user.first_name}!\n {message.from_user.id}\n',
                             reply_markup=kb.main);
    await rq.set_user(message.from_user.id,False, message.from_user.first_name, message.from_user.username)
    print('Press Start ', message.from_user.id,' ',message.from_user.username, '') #эта строчка также для отладки
*!!!!!: Сейчас эта сравнение работает на 1 айдишник админа (мой соответственно). Я хочу переделать этот момент как раз на то, чтобы была прогонка по БД. У кого в колонке "adm" стоит "1" - значит берется id этого пользователя и у него будут свои привилегии так сказать.
Я так понимаю, что такую прогонку надо делать перед каждым действием, дабы избежать выполнение "админовских" команд обычными юзерами.
**Время мне будет необходимо для других функций. Тут оно было установлено временно для отладки..


Для понимания функции set_user, опишу ее ниже:

Python
1
2
3
4
5
6
async def set_user(tg_id, adm, name, username):
    async with async_session() as session:
        user = await session.scalar(select(User).where(User.tg_id == tg_id))
        if not user:
            session.add(User(tg_id=tg_id,adm=adm, name=name, tg_link=username, date_registration=datetime.now().strftime('%D %H:%M')))
        await session.commit()
Вообще мне надо реализовать еще а-ля планировщик к этому боту.. Чтобы бот присылал уведомления в определенное время и день недели. В идеале, чтобы каждый юзер мог выбрать те уведомления, которые ему интересны (для этого БД и использую собственно).. для этого, я так понял, используется библиотека "apscheduler" Но пока я ее только пару раз попробовал и возникли ошибки.. Так полагаю это связано с асинхроном..
Но пока хочу разобраться, как правильно работать с БД..
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
07.12.2024, 17:52
зайду с другой стороны -1) откуда ты вообще знаешь кто в чате админ? как эти данные попали в бд?
2) в БД юзер числится админом, а в чате его уже понизили, как ты это отловишь?
0
0 / 0 / 0
Регистрация: 04.12.2024
Сообщений: 15
08.12.2024, 22:55  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
откуда ты вообще знаешь кто в чате админ? как эти данные попали в бд?
При запуске бота у меня идет проверка целостности БД. Если БД есть, то все ок. если нет, то она создается с нуля. И первой же строчкой вносятся мои данные. Т.е. я админ в любом случае.
Цитата Сообщение от Welemir1 Посмотреть сообщение
в БД юзер числится админом, а в чате его уже понизили, как ты это отловишь?
Бот работает с БД. Все правки вносит он, т.е. функции, которые прикручены к боту. Если юзера понижают/повышают - Бот видит эту команду и выполняет соответствующую функцию. Если речь идет о нагрузке, т.е. когда много запросов к боту с различными повышениями-понижениями и т.п., то тут как вариант добавить а-ля sleep для пользователей.
Если пользователь будет нон-стопом тыкать на команду, то бот просто не будет ее выполнять, а выведет, например, "не спеши" или любое другое предупреждающее сообщение, которое даст понять пользователю, что тыкать нон-стопом бесполезно. Тем самым можно избежать такого рода перегрузки и минимизировать ошибки.

Возможно, такую идею и реализую потом, если будет в этом необходимость. Но пока бы с работой с БД разобраться.. Все времени нет на это, к сожалению... Программирование для меня - хобби, а не основная работа.
0
0 / 0 / 0
Регистрация: 04.12.2024
Сообщений: 15
11.12.2024, 23:16  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
select my_data from usere where flag=1 ?
А как это будет выглядеть функция перебора БД, если использовать query/filter из sqlalchemy????

Вот на примере выше (функция set_user) все работает. А когда пытаюсь реализовать подобную строчку с query и filter - простреливают ошибки..
Пытаюсь реализовать что-то типа такого вида:
Python
1
session.query(User).filter_by(adm='1').all()
Не получается...
Подскажите, куда копать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2024, 23:16
Помогаю со студенческими работами здесь

Работа - проведение обучающих семинаров по C#. Работа по выходным дням ( сб-вс - 32 часа). От 30 000р.
Обязанности - проведение обучающих семинаров по C# Базовый (начальный уровень). Опыт преподавания не обязателен, главное чтобы вы не...

Количество подведенного и отведенного тепла, работа сжатия, работа расширения
Определить количество подведенного и отведенного тепла, работу сжатия, работу расширения, полезную работу и КПД цикла предыдущей...

Работа с Меню. Сохранение, печать, создать новый. Работа с рисованием
В общем сабж. Делается программа, которая должная Сохранять, печатать и очищать поле (создать новый/очистка). Также хочу спросить как...

Работа с ems api: корректная работа при указании веса.
Здравствуйте! Есть такой код, для работы с ems api (http://www.emspost.ru/ru/corp_clients/dogovor_docements/api/) <!DOCTYPE html...

Работа формы в фоне, вне фокуса (работа с раскладкой клавиатуры)
Как заставить это работать в фоне? Даный код работает пока форма в фокусе, как только ее отпускаем - она не реагирует. Public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru