Телеграм бот на Python / #4 – SQLite3. Подключение к базе данных

preview_player
Показать описание
За урок вы выполните подключение базы данных к вашему Телеграм Боту. Вы подключите БД SQLite3, но в будущем по схожему принципу сможете подключать любые другие БД.

✅ Полезные ссылки:

⏰ Тайм-коды:
00:00 - Начало
01:10 - Подключение SQLite3
03:10 - Создание таблицы
06:15 - Получение имени и пароля
10:00 - Добавление пользователя в БД
17:05 - Список всех пользователей
21:20 - Заключительная часть


✔ -------------


- Уроки от #GoshaDudar 👨🏼‍💻
- Все уроки по хештегу #goshaLessons
Рекомендации по теме
Комментарии
Автор

Это лучший ютубер которого я видел ты очень круто объясняешь темы очень крутой курс смотрю каждое видео и повторяю ща тобой пытаюсь разобраться в каждой строчке очень долго искал такого и не мог найти но ты делаешь невероятное) спасибо большое, удачи в развитии канала

НикитаМечетин
Автор

Чтобы не плодить лишний раз глобальные переменные, можно передавать третьим аргументом имя пользователя
bot.register_next_step_handler(message, fill_user_pass, name)
в этом случае функция fill_user_pass будет принимать не один аргумент - message, а два, например, user_name.
def fill_user_pass(message, user_name):
Так можно увеличивать их количество от функции к функции, но лучше эти объекты организовывать в список или словарь

Markisi
Автор

Ребята огромная вам благодарность что так круто преподаете все!!!! Спасибо большое отличный курс!

МарсельЗагитов-сж
Автор

Спасибо огромное за курс! После django и других работ, это кажется просто кайфом.Я очень жду продолжения!! Удачи

chesnokov
Автор

Я думаю переменную name лучше делать не глобальной, а передавать из функции user_name в user_pass напрямую. Можно третьим аргументом в метод bot.register_next_step_handler(message, user_pass, name) добавить. Там бесконечное количество переменных можно передавать таким образом.

daniilhalytskyi
Автор

Супер тема!!! Очень полезно для меня. Спасибо большое!

artembezrukov
Автор

Чтобы избежать ошибки
sqlite3.OperationalError: no such column:
нужно было просто добавить кавычки
f'INSERT INTO users (name, pass) VALUES ("{user_name}", "{password}")'

Markisi
Автор

ошибка на 15:25 была связана с синтаксисом SQL, можно было просто обрамить в двойные кавычки вот так (я так и исправил и сработало, а уже потом увидел ваше решение):
cur.execute(f'INSERT INTO users (name, pass) VALUES ("{name}", "{password}")')

JohnHarmRussia
Автор

Подскажите как переместить значение ячейки в sql таблице зная ее строчку и столбец в переменную?

МИРАД-ез
Автор

Уроки супер, очень легко и понятно. Рахмет!

КуанышЖусупов-рю
Автор

Сперва начал проходить курс питону у одного блогера, не понравилось перешёл к Гоше и тут всё прекрасно.
Начал проходить тут связанный с ботами и понял, что пора искать другой канал.
Ощущение, что ты просто постарался сделать максимально ёмко эту работу. Просто напихал всего без особых объяснений.
Курс по Питону был прекрасен, а здесь наскоряк что то слепленное.

И пожалуйста, если ты пишешь код, а он не работает - не показывай его. Ты просто издеваешься над нами. Мы переписываем, пытаемся разобраться как работает. Ты запускаешь и....оно просто не работает. Так вырежи это, зачем тратить время и силы

Спасибо за курс по питону, но этот курс, я пожалуй, пройду в другом месте

AleksChessShow
Автор

Спасибо за видео! У меня вопрос, как отчистить список пользователей?

kotlayn
Автор

Надеюсь тут будет про хостинг бота и базы, а то у меня с этим постоянно проблемы

andreimix
Автор

У меня почему то не раскрашивается работа с sqlite3.Как исправить?
CREATE TABLE IF NOT EXISTS users (id int auto_increment primary key, name varchar(50), pass varchar(50))
Вот это почему то пишется полностью зеленым а не так как на видео.

czdiejengco
Автор

Я сейчас скажу возможно не самое популярное мнение, но все таки - sqlite3 не сработает по модели mysql, там есть свои моменты, например: id auto_increment p...k, - не будет вводить значения в таблицу, при выборке мы получим значение None, избежать этого можно так - id primary key, name varchar(50), ... либо так - id primary key autoincrement, name varchar(50), ... во втором случае знак "земля" в слове autoincrement не нужен, иначе будет ошибка синтаксиса.

artemalferov
Автор

как сделать так, что б в кавычках тоже была подсветка синтаксиса, как на видео? У меня вся строка - 'CREATE TABLE IF...' зеленого цвета, ошибки не подсвечиваются(((

_Azimut
Автор

А вот кстати вопрос. В каждом хэндлере вы заново подключаетесь к бд и дропаете подключение, это по идее сильно влияет на производительность? А если есть желание разделить проект на модули?

solark
Автор

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

stouneespring
Автор

В sqlite нет varchar(50). Есть только text, а ограничение прописывается отдельно, иначе не будет работать

drekouli
Автор

Друг мой, привет.Полезнве знания, я начинаю свой путь с твоих уроков. Скажи пожалуйста, таблица со списком пользователей доступна только разработчику? А то будет не очень, если у пользователя будут выводиться ники и пароли других юзеров)

maxgaming