Как подключить базу данных к телеграмм-боту / 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

КОМЕНТАРІ • 76

  • @lanalinali
    @lanalinali 5 років тому +13

    по существу, четко, без воды + приятный голос) то, что искала
    спасибо!

  • @Авахи
    @Авахи 2 роки тому +1

    Долго не мог разобраться. Очень сильно помогли, спасибо вам большое

  • @O.DRISCOLL
    @O.DRISCOLL 4 роки тому +9

    Чтобы DataBase заработала, нужно в Pycharm > Settings > Plungins > Установить плагин DataBase и потом уже выбрать SQLite

  • @ТарасМочернюк-ч6з
    @ТарасМочернюк-ч6з 4 роки тому +15

    где можно помотреть исходник? а то в телеге не могу найти(

  • @Айтішний
    @Айтішний 5 років тому +3

    Воууу, только вчера искал подобное.
    Спасибо за видео :)

  • @ersultan_boken5617
    @ersultan_boken5617 3 роки тому +5

    Вампиры умирают видя солнце
    Програмситы видя белый тему

    • @it_everyday
      @it_everyday  3 роки тому

      Всю жизнь сижу на светлой теме. Получается я не программист?

    • @ersultan_boken5617
      @ersultan_boken5617 3 роки тому

      @@it_everyday рофл

  • @vladimir2289
    @vladimir2289 5 років тому +1

    записывай видосы почаще, при возможности)

  • @МихайловАртем-н8у
    @МихайловАртем-н8у 4 роки тому +1

    Спасибо большое, ваши видео очень помогают!
    Продолжайте в том же духе)

    • @it_everyday
      @it_everyday  4 роки тому

      Спасибо) приходите на следующий стрим

  • @easypeet5336
    @easypeet5336 4 роки тому +1

    Очень благодарен вам, понятно и интересно

  • @volodiaagadjanov7087
    @volodiaagadjanov7087 5 років тому

    не понимаю почему люди не смотрят, по ботам не так много доступной инфы на понятном языке

  • @ВалентинФокин-й8у
    @ВалентинФокин-й8у 5 років тому +1

    Как же круто! Больше уроков!!!!!!

  • @gandrew8102
    @gandrew8102 Рік тому

    подскажите а как вывести в телеграмм бот запрос sql: например, есть таблица с температурой датчика, не знаю как сделать вывод последней температуры в бот тг. подскажите механизм?

  • @redneck1680
    @redneck1680 4 роки тому

    Спасибо Вам замечательный человек!!!!!!!!!

  • @ДенисСюсин-р1е
    @ДенисСюсин-р1е 3 роки тому +2

    где исходник найти а?? ошибку выдает

  • @214ink
    @214ink 4 роки тому +1

    Добрый день, не нашел в вашем тг-канале исходный код, будьте добры указать на каком именно посту?

    • @it_everyday
      @it_everyday  4 роки тому

      Не ленись, полистай канал

    • @214ink
      @214ink 4 роки тому

      IT каждый день Канал создан позже этого видео, там нет этого поста :(

    • @it_everyday
      @it_everyday  4 роки тому

      ​@@214ink ты ошибаешься. код есть в тг-канале

  • @ds-hb2zs
    @ds-hb2zs 3 роки тому

    Привет! скажи пожалуйста интересует бот для общего пользование. К примеру у меня есть бот и в файле конфиг указан мой id это значит только я могу пользоваться ботом. Я конечно могу добавить другова админа прописав в файле конфиг его id но такой ручной вариант добавления юзера не устраивает и я хочу чтоб моим ботом мог пользоваться любой человек но при этом чтоб у каждого была своя база. Как это сделать? А то во всех видео ютубе показывает одно и тоже бот для личного пользование. а что если человек хочет создать бота для народа или бота коммерческого характера то есть платного бота? я пересмотрел сотни видео и не водном про это не показывается ведь боты для общего пользование миллион.

  • @ВаргасНанис
    @ВаргасНанис 2 роки тому

    from echo.config import load_config
    from echo.utils import debug_requests
    поставил библиотеку echo
    ModuleNotFoundError: No module named 'echo.config'
    Помогите, в чём проблема?

  • @oldmaster_one
    @oldmaster_one Рік тому

    новый комментарий)

  • @ДенисГригорук-м5ю
    @ДенисГригорук-м5ю 4 роки тому

    Привет! А резве не надо закрывать курсор и соединение, после завершения работы ф-ции?

    • @it_everyday
      @it_everyday  4 роки тому

      привет, надо, вот тут всё открывается и закрывается: bitbucket.org/vkasatkin/tele_bot/src/10998447cdc8f087a90b50bede3f1094853b9cf1/archive_bot/db.py#lines-10
      почитай что такое контекстные менеджеры в питоне

    • @tre_yck547
      @tre_yck547 2 роки тому

      Ааа

  • @Pubgber
    @Pubgber 4 роки тому

    Добрый день, при проверке наполнения базы данных выскакивает вот такая ошибка : conn.commit()
    sqlite3.OperationalError: database is locked
    подскажите как обойти блокировку базы, заранее спасибо

  • @denis8verbin
    @denis8verbin 4 роки тому

    А почему вы решили работать с базой самостоятельно, а не через ORM? Сам стою перед выбором sqlalchemy или собственный велосипед.

    • @it_everyday
      @it_everyday  4 роки тому

      Чистый sql - это не велосипед. Почитайте вообще в чем разница, и какие минусы у ORM

  • @user-kc7wt4nu7x
    @user-kc7wt4nu7x 2 роки тому

    Здравствуйте! Подкажите как можно получить одно сообщение из базы данных.

  • @abboffer2478
    @abboffer2478 3 роки тому

    у меня почему то пишет
    sqlite3.OperationalError: database is locked

  • @ignatdanilov4701
    @ignatdanilov4701 4 роки тому

    Супер уроки!
    Подскажи как можно залить базу данных на сервер heroku и как выкачивать обратно данные с сервера?

  • @rib
    @rib 8 місяців тому

    В PyCharm Community нет Database 😟

  • @ДмитрийБелаш-ж7и
    @ДмитрийБелаш-ж7и 4 роки тому

    Возможно уже поздно задавать вопрос но, у меня в функции 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

    • @it_everyday
      @it_everyday  4 роки тому

      Ну значит у тебя там и правда 0. Ищи проблемы в других частях. Может у тебя сообщения не записываются

  • @timohaden6770
    @timohaden6770 4 роки тому +5

    У меня не работает(

    • @ArtimonMon
      @ArtimonMon 3 роки тому +1

      Попробуй подумать минут 30 и всё получиться

  • @Novogumor
    @Novogumor 4 роки тому

    А как создать в этом уроке не инлайн кнопки )? Две кнопки. Одна кнопка, для ввода сообщения которое будет записывать в базу то что ввел пользователь, а вторая кнопка, для поиска и вывода из базы конкретной информации которую ввел пользователь в сообщении.

    • @it_everyday
      @it_everyday  4 роки тому +1

      Так же всё. Посмотри видео про кнопки, если проблема в этом

  • @denisdred
    @denisdred 4 роки тому

    почему у меня такой вкладки database ? Да и в пайчаре файлик sqlite отображает со знаком вопроса

    • @it_everyday
      @it_everyday  4 роки тому

      Не знаю. У меня PyCharm Professional Edition

    • @geroy8563
      @geroy8563 4 роки тому +1

      У меня тоже не было, я плагин установил

    • @user-hr7cl5tr4p
      @user-hr7cl5tr4p 4 роки тому

      не тот пайчарм

  • @archieruin6875
    @archieruin6875 4 роки тому

    Советую посмотреть aiogram и какую-то ORM (SQLAlchemy, peewee или ponyorm)

    • @it_everyday
      @it_everyday  4 роки тому

      А я не советую

    • @BioWolf1907
      @BioWolf1907 4 роки тому

      @@it_everyday Почему не советуете?

  • @kakeinnuriaki9718
    @kakeinnuriaki9718 3 роки тому +1

    скиньте плз код

  • @DAROM-TK
    @DAROM-TK 4 роки тому

    В процессе тестрования базы данных через бота обнаружилась проблема. У меня есть кнопка, при нажати на которую к базе данных отправляется два запроса
    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 не восстанавливает соединение (возможно проблема в том, что ошибка два раза идет с обоих аккаунтов, и соединение одновременно два раза пытается воссстановиться).
    Не знаете как это обойти?

    • @it_everyday
      @it_everyday  4 роки тому

      читайте документацию по MySQL, смотрите что значит эта ошибка. к ботам это не имеет отношения, проблема именно в работе с базой / в базе

    • @DAROM-TK
      @DAROM-TK 4 роки тому

      @@it_everyday , все же это скорее коннектором питона. Потому что commit после апдейт инсерт и делит это тема именно коннектора. Прямые запросы к базе через консоль например не требуют commit для изменения.
      На данный момент я прочитал Вашу рекомендацию, к другому Вашему видео, как перейти на однопоточность, и пока больше соединение с базой не рвется.
      Еще было бы интересно потестить этот косяк например при работе с базой через php. Я в этом вообще не шарю.
      В php апдейты и делеты к базе тоже через commit интересно?

    • @it_everyday
      @it_everyday  4 роки тому

      "commit" это тоже механизм СУБД. возможно, в консоле к базе у вас включен авто-коммит. но это не решение проблемы, просто замечание )

  • @oldgamer5734
    @oldgamer5734 3 роки тому +2

    исходник от 27 февраля 2020 в тг

  • @ЭдуардДомодедов-с3ы

    Доброе время суток. выдает ошибку (Invalid config "development"
    Process finished with exit code 1)

    • @it_everyday
      @it_everyday  4 роки тому

      Вы не всё скопировали значит, или уже что-то поломали

    • @ЭдуардДомодедов-с3ы
      @ЭдуардДомодедов-с3ы 4 роки тому

      @@it_everyday Спасибо за ответ. Убрал "from echo.config import load_config" и ошибка пропала. Очень ценные уроки. Доступные для восприятия. Продолжайте в том же духе)

  • @Mark-n1u9m
    @Mark-n1u9m Рік тому +1

    Эти видео явно не для нубов, а не новичкам они не нужны вообще. сделай нормально в 1 файле весь код покажи как подключать и все и будет больше лайков и благодарностей. Можно все сделать в 20 строк кода и будет понятно, видео же называется как подключить базу , а не как считать записи и все то что ты делаешь в нем, кому оно надо?

    • @amalyshok
      @amalyshok Рік тому

      как минимум мне. если ты полный ноль, заплати фрилансерам или автору канала. он тебе сделает всё, что хочешь. а пока радуйся, что тебе нахаляву показывают, как работать с базой данных.
      у меня сейчас нет времени изучать sqlite, а подключить элементарную базу данных необходимость есть. спасибо автору, что экономит моё время

    • @Mark-n1u9m
      @Mark-n1u9m Рік тому

      @@amalyshok наоборот же, ищешь одно по названию и тратишь время смотря контент который слабо релевантен названию. Если бы цель была потратить время впустую и бесплатно, то видео несомненно крутое. Позднее нашел видео которое лаконично за минуту раскрывало тему и соответствовало названию. А здесь к подключению и работе с базой налипло 95% лишней инфы не по теме, комент был исключительно об этом.

    • @amalyshok
      @amalyshok Рік тому +1

      @@Mark-n1u9m вся лишняя инфа во-первых, подаётся после основной, во-вторых наглядно демонстрирует пример использования. Как по мне, всё шикарно

  • @fanntazzer9782
    @fanntazzer9782 3 роки тому

    19:00

  • @anngelfairy
    @anngelfairy 4 роки тому

    пожалуйста моешь помочь мне

    • @it_everyday
      @it_everyday  4 роки тому +1

      боюсь что тебе уже ничего не помоет

  • @bomboklaa
    @bomboklaa 2 роки тому +1

    Сорри за негатив, но не очень приятно слушать, как ты давишься слюнями

  • @zakhar4138
    @zakhar4138 3 роки тому

    здрасте. я вместо sqlite3 использую psycopg2, почти тоже самое но когда я отправляю запрос add_message(ua-cam.com/video/yBEz6TjFKKw/v-deo.html) у меня возникает проблема. вот мой код: pastebin.com/0enEcPwg

    • @it_everyday
      @it_everyday  3 роки тому

      ты неправильно написал декоратор. на 16 строке должно быть "return inner", т.е. вернуть функцию, а не результат функции

  • @сергейсергеев-о2п4л

    Реклама раз в минуту жесть.....

    • @it_everyday
      @it_everyday  4 роки тому +2

      Реклама показывается только у тех, у кого нет ютуб-премиум

    • @ermakvvn
      @ermakvvn 4 роки тому

      @@it_everyday И у кого нет адблока

    • @it_everyday
      @it_everyday  4 роки тому +1

      Хаха, вот она, благодарность от зрителя)

    • @сергейсергеев-о2п4л
      @сергейсергеев-о2п4л 4 роки тому

      @@it_everyday не паникуй. Лайк я поставил. Просто для информации написал что жесть ! Обычно одна две рекламы но не раз в минуту

  • @CjEcho74
    @CjEcho74 3 роки тому +1

    from echo.config import load_config
    from echo.utils import debug_requests
    поставил библиотеку echo
    ModuleNotFoundError: No module named 'echo.config'
    Помогите, в чём проблема?

    • @oldgamer5734
      @oldgamer5734 3 роки тому

      проблема в том, что автор не показал как обрабатываются config и requests, а эти файлы у него есть , теперь искать в его телеграме исходник.. у меня такая же сейчас проблема