Как подключить базу данных к телеграмм-боту / Python SQL
Вставка
- Опубліковано 16 жов 2024
- Продолжаем разрабатывать различных Telegram-ботов на Python с нуля. В этом видео мы прикрутим самую простую базу данных SQLite, а так же добавим множество мелких улучшений к ботам из прошлых видео.
Самые популярные вопросы из комментариев:
новая версия библиотеки Python-Telegram-Bot==12.2.0 и её обновлённый синтаксис
исправлен запуск бота: вы точно будете знать, нужны ли вам прокси или нет
запись сообщений пользователя в БД
утилиты для работы с БД
Исходный код ты найдешь в Telegram-канале: telegg.ru/it_e...
Полезные ссылки из видео:
1) Библиотека на которой я делаю ботов github.com/pyt...
2) Подробнее про Sqlite3 docs.python.or...
3) Поддержать меня если видео оказалось полезным / iteveryday
#python #PythonTelegramBot #SQLite #ityoutubersru
по существу, четко, без воды + приятный голос) то, что искала
спасибо!
Долго не мог разобраться. Очень сильно помогли, спасибо вам большое
Чтобы DataBase заработала, нужно в Pycharm > Settings > Plungins > Установить плагин DataBase и потом уже выбрать SQLite
Спасибо большое!
Чево чево?
Причом тут pycharm
где можно помотреть исходник? а то в телеге не могу найти(
Воууу, только вчера искал подобное.
Спасибо за видео :)
Вампиры умирают видя солнце
Програмситы видя белый тему
Всю жизнь сижу на светлой теме. Получается я не программист?
@@it_everyday рофл
записывай видосы почаще, при возможности)
Спасибо большое, ваши видео очень помогают!
Продолжайте в том же духе)
Спасибо) приходите на следующий стрим
Очень благодарен вам, понятно и интересно
не понимаю почему люди не смотрят, по ботам не так много доступной инфы на понятном языке
Как же круто! Больше уроков!!!!!!
подскажите а как вывести в телеграмм бот запрос sql: например, есть таблица с температурой датчика, не знаю как сделать вывод последней температуры в бот тг. подскажите механизм?
Спасибо Вам замечательный человек!!!!!!!!!
где исходник найти а?? ошибку выдает
Добрый день, не нашел в вашем тг-канале исходный код, будьте добры указать на каком именно посту?
Не ленись, полистай канал
IT каждый день Канал создан позже этого видео, там нет этого поста :(
@@214ink ты ошибаешься. код есть в тг-канале
Привет! скажи пожалуйста интересует бот для общего пользование. К примеру у меня есть бот и в файле конфиг указан мой id это значит только я могу пользоваться ботом. Я конечно могу добавить другова админа прописав в файле конфиг его id но такой ручной вариант добавления юзера не устраивает и я хочу чтоб моим ботом мог пользоваться любой человек но при этом чтоб у каждого была своя база. Как это сделать? А то во всех видео ютубе показывает одно и тоже бот для личного пользование. а что если человек хочет создать бота для народа или бота коммерческого характера то есть платного бота? я пересмотрел сотни видео и не водном про это не показывается ведь боты для общего пользование миллион.
from echo.config import load_config
from echo.utils import debug_requests
поставил библиотеку echo
ModuleNotFoundError: No module named 'echo.config'
Помогите, в чём проблема?
новый комментарий)
Привет! А резве не надо закрывать курсор и соединение, после завершения работы ф-ции?
привет, надо, вот тут всё открывается и закрывается: bitbucket.org/vkasatkin/tele_bot/src/10998447cdc8f087a90b50bede3f1094853b9cf1/archive_bot/db.py#lines-10
почитай что такое контекстные менеджеры в питоне
Ааа
Добрый день, при проверке наполнения базы данных выскакивает вот такая ошибка : conn.commit()
sqlite3.OperationalError: database is locked
подскажите как обойти блокировку базы, заранее спасибо
А почему вы решили работать с базой самостоятельно, а не через ORM? Сам стою перед выбором sqlalchemy или собственный велосипед.
Чистый sql - это не велосипед. Почитайте вообще в чем разница, и какие минусы у ORM
Здравствуйте! Подкажите как можно получить одно сообщение из базы данных.
у меня почему то пишет
sqlite3.OperationalError: database is locked
Супер уроки!
Подскажи как можно залить базу данных на сервер heroku и как выкачивать обратно данные с сервера?
В PyCharm Community нет Database 😟
Возможно уже поздно задавать вопрос но, у меня в функции count_message возвращается 0
def count_message(user_id: int):
conn = get_connection()
c = conn.cursor()
c.execute('SELECT COUNT(*) FROM user_message WHERE user_id = ? LIMIT 1', (user_id,))
- я думаю я что-то тут не так написал или что то еще помогите пж
(res,) = c.fetchone()
conn.commit()
return res
Ну значит у тебя там и правда 0. Ищи проблемы в других частях. Может у тебя сообщения не записываются
У меня не работает(
Попробуй подумать минут 30 и всё получиться
А как создать в этом уроке не инлайн кнопки )? Две кнопки. Одна кнопка, для ввода сообщения которое будет записывать в базу то что ввел пользователь, а вторая кнопка, для поиска и вывода из базы конкретной информации которую ввел пользователь в сообщении.
Так же всё. Посмотри видео про кнопки, если проблема в этом
почему у меня такой вкладки database ? Да и в пайчаре файлик sqlite отображает со знаком вопроса
Не знаю. У меня PyCharm Professional Edition
У меня тоже не было, я плагин установил
не тот пайчарм
Советую посмотреть aiogram и какую-то ORM (SQLAlchemy, peewee или ponyorm)
А я не советую
@@it_everyday Почему не советуете?
скиньте плз код
В процессе тестрования базы данных через бота обнаружилась проблема. У меня есть кнопка, при нажати на которую к базе данных отправляется два запроса
cursor.execute("update obyavl set count_zayavok = count_zayavok-1 where obyavl_id= '%s';"%id_ob[0] )
cursor.execute("delete from zayavki where id_obyavl = '%s' and id_pokup='%s';"%(str(id_ob[0]), str(call.message.chat.id )))
cnx.commit()
Случайно получилось, что с двух разных аккаунтов телеграм нажали эту кнопку одновременно, в итогесоединение падает с базой.
errno=2055, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.OperationalError: 2055: Lost connection to MySQL server at '127.0.0.1:3306', system error: 1 [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:2508)
проверил раз 10 - если одновременно нажимать, ошибка всегда.
Пробовал через try except - засунуть в except cnx=mysql.connector.connect не восстанавливает соединение (возможно проблема в том, что ошибка два раза идет с обоих аккаунтов, и соединение одновременно два раза пытается воссстановиться).
Не знаете как это обойти?
читайте документацию по MySQL, смотрите что значит эта ошибка. к ботам это не имеет отношения, проблема именно в работе с базой / в базе
@@it_everyday , все же это скорее коннектором питона. Потому что commit после апдейт инсерт и делит это тема именно коннектора. Прямые запросы к базе через консоль например не требуют commit для изменения.
На данный момент я прочитал Вашу рекомендацию, к другому Вашему видео, как перейти на однопоточность, и пока больше соединение с базой не рвется.
Еще было бы интересно потестить этот косяк например при работе с базой через php. Я в этом вообще не шарю.
В php апдейты и делеты к базе тоже через commit интересно?
"commit" это тоже механизм СУБД. возможно, в консоле к базе у вас включен авто-коммит. но это не решение проблемы, просто замечание )
исходник от 27 февраля 2020 в тг
Доброе время суток. выдает ошибку (Invalid config "development"
Process finished with exit code 1)
Вы не всё скопировали значит, или уже что-то поломали
@@it_everyday Спасибо за ответ. Убрал "from echo.config import load_config" и ошибка пропала. Очень ценные уроки. Доступные для восприятия. Продолжайте в том же духе)
Эти видео явно не для нубов, а не новичкам они не нужны вообще. сделай нормально в 1 файле весь код покажи как подключать и все и будет больше лайков и благодарностей. Можно все сделать в 20 строк кода и будет понятно, видео же называется как подключить базу , а не как считать записи и все то что ты делаешь в нем, кому оно надо?
как минимум мне. если ты полный ноль, заплати фрилансерам или автору канала. он тебе сделает всё, что хочешь. а пока радуйся, что тебе нахаляву показывают, как работать с базой данных.
у меня сейчас нет времени изучать sqlite, а подключить элементарную базу данных необходимость есть. спасибо автору, что экономит моё время
@@amalyshok наоборот же, ищешь одно по названию и тратишь время смотря контент который слабо релевантен названию. Если бы цель была потратить время впустую и бесплатно, то видео несомненно крутое. Позднее нашел видео которое лаконично за минуту раскрывало тему и соответствовало названию. А здесь к подключению и работе с базой налипло 95% лишней инфы не по теме, комент был исключительно об этом.
@@Mark-n1u9m вся лишняя инфа во-первых, подаётся после основной, во-вторых наглядно демонстрирует пример использования. Как по мне, всё шикарно
19:00
пожалуйста моешь помочь мне
боюсь что тебе уже ничего не помоет
Сорри за негатив, но не очень приятно слушать, как ты давишься слюнями
здрасте. я вместо sqlite3 использую psycopg2, почти тоже самое но когда я отправляю запрос add_message(ua-cam.com/video/yBEz6TjFKKw/v-deo.html) у меня возникает проблема. вот мой код: pastebin.com/0enEcPwg
ты неправильно написал декоратор. на 16 строке должно быть "return inner", т.е. вернуть функцию, а не результат функции
Реклама раз в минуту жесть.....
Реклама показывается только у тех, у кого нет ютуб-премиум
@@it_everyday И у кого нет адблока
Хаха, вот она, благодарность от зрителя)
@@it_everyday не паникуй. Лайк я поставил. Просто для информации написал что жесть ! Обычно одна две рекламы но не раз в минуту
from echo.config import load_config
from echo.utils import debug_requests
поставил библиотеку echo
ModuleNotFoundError: No module named 'echo.config'
Помогите, в чём проблема?
проблема в том, что автор не показал как обрабатываются config и requests, а эти файлы у него есть , теперь искать в его телеграме исходник.. у меня такая же сейчас проблема