Как подключить базу данных к боту телеграмм
Перейти к содержимому

Как подключить базу данных к боту телеграмм

  • автор:

Как подключить базу данных Postgres к телеграм боту?

Попал в руки интересный телеграм бот, очень захотелось установить его и потыкать, но опыта в этом никакого. Из файла requirements установил необходимые модули на чистую ubuntu 20. Вот что используется:

SQLAlchemy~=1.4.7 aiogram~=2.12.1 beautifulsoup4~=4.9.3 requests~=2.25.1 aiohttp~=3.7.4.post0 psycopg2-binary

В файле конфиг есть строка, которая отправила меня в нокаут)) Подскажите, как создать нужную базу данных и прописать ей путь. Нужно устанавливать postgresql на сервер или для этого используется sqlalchemy?

DB_URL = 'postgresql://postgres:123@localhost:5432/parser'
  • Вопрос задан более года назад
  • 935 просмотров

1 комментарий

Простой 1 комментарий

paran0id

ещё можно использовать sqlite вместо postgres, это гораздо проще и для «потыкать» подойдёт
Решения вопроса 1

ma4akk

Чтобы подключить базу данных Postgres к телеграм боту, вам нужно сначала установить и настроить Postgres на вашем сервере. Это можно сделать, выполнив команду sudo apt-get install postgresql в командной строке. Затем вы можете запустить командную утилиту psql и создать базу данных с помощью команды CREATE DATABASE parser;.

После этого вы можете использовать модуль psycopg2-binary для подключения к базе данных с помощью библиотеки SQLAlchemy. Для этого вы можете использовать код подобный следующему:

import sqlalchemy DB_URL = 'postgresql://postgres:123@localhost:5432/parser' engine = sqlalchemy.create_engine(DB_URL) connection = engine.connect()

Этот код создаст подключение к базе данных parser, используя имя пользователя postgres и пароль 123. После того, как подключение будет установлено, вы можете использовать методы connection для выполнения SQL-запросов и работы с базой данных.

Подключаем Sqlite3 к Telegram боту

Для многих новичков в разработке на Python возникает проблема — как подключить базу данных? Я сам столкнулся с такой проблемой в начале разработки. Тема оказалось довольно простой, но в интернете есть множество гайдов, которые могут запутать. В этом туториале я расскажу о том, как просто интегрировать базу данных Sqlite3 на примере Telegram бота.

Начало работы

Для работы нам понадобятся базовые знания в Python, достаточные для написания простого бота. Данный гайд можно использовать не только для интеграции с ботом, но и для других проектов. Если вы не используете PyCharm, и у вас нет средства для работы с БД, то необходимо установить утилиту SQLiteStudio с официального сайта.

Теперь давайте перейдем к написанию кода. В терминале необходимо установить pyTelegramBotAPI (если по какой-то причине у вас его нет).

pip install pyTelegramBotAPI

Далее создаем новый файл с расширением .py. В нем прописываем следующее:

import sqlite3 import telebot bot = telebot.TeleBot("token")

Устанавливать sqlite3 не нужно — это стандартная библиотека. Вместо «token» необходимо указать токен бота, который выдал вам BotFather. Теперь проверим, работает ли бот.

@bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, 'Добро пожаловать')

Запустим код. Если при запуске бота он пишет нам «Добро пожаловать», то все работает отлично.

Как мы видим, все работает.

Настройка базы данных

Открываем SQLiteStudio. Во вкладке Database выбираем пункт Add a database. Для удобства можно использовать сочетание Ctrl+O.

Далее нажимаем на зеленую кнопку Создать новый фал базы данных. Выбираем директорию вашего проекта. В ней можете создать отдельную папку db, где будет хранится файл с базой. Вводим название, например database. Расширение будет присвоено автоматически. Нажимаем Сохранить. Теперь слева в списке у нас появился наш файл. Кликаем по нему ПКМ и выбираем пункт Connect to the database. Соединение с базой установлено. Появилось два подпункта: Таблицы и Представления. В этом уроке мы будем затрагивать только пункт Таблицы. Нажимаем по нему ПКМ и выбираем Add a table.

В поле для ввода указываем имя для таблицы. Я назову ее test. Чуть выше есть активная кнопка Добавить столбец (Ins). В появившемся окне указываем название столбца и тип данных. Для начала вам могут понадобится такие условия, как Первичный ключ, Не NULL и Уникальность. Первый столбец я назову id, выберу тип данных INTEGER и установлю все три условия. У Первичный ключ выберу настройку Автоинкремент. Этот столбец будет автоматически создавать ID записи в таблице. Работать с ним в коде мы не будем.

Второй столбец будет хранить user_id. Он будет иметь тип данных INT, уникален и не равен нулю. Третий столбец я назову user_name, присвою тип данных STRING и выберу пункт Не NULL. Еще 2 столбца будут называться user_surname и username. После того, как вы создали столбцы, нажимаем зеленую кнопку с галочкой.

В общем все будет выглядеть вот так.

Работа с базой данных в коде

Теперь давайте вновь перейдем к коду. Создадим 2 переменные.

conn = sqlite3.connect('db/database.db', check_same_thread=False) cursor = conn.cursor()

В первой мы подключаем нашу базу данных, а во второй создаем курсор для работы с таблицами. Обратите внимание на то, что у меня в директории проекта создана папка db, а уже в ней находится файл БД. Если у вас по другому, укажите расположение в первой переменной.

Теперь создадим функцию, которая будет нужна непосредственно для работы с таблицей.

def db_table_val(user_id: int, user_name: str, user_surname: str, username: str): cursor.execute('INSERT INTO test (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username)) conn.commit()

Итак, сейчас объясню, что тут происходит. В аргументах функции мы указываем переменную user_id с типом данных inst. Далее добавляем запись в таблицу test в столбец user_id. С остальными значениями точно так же. В конце мы просто применяем изменения. Эта функция не будет выполнятся, пока мы ее не вызовем. Давайте исправим это. Создадим обработчик сообщений от пользователя и будем вносить в базу его данные.

@bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text.lower() == 'привет': bot.send_message(message.from_user.id, 'Привет! Ваше имя добавленно в базу данных!') us_id = message.from_user.id us_name = message.from_user.first_name us_sname = message.from_user.last_name username = message.from_user.username db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)

В переменные мы вносим имя пользователя, id, имя и фамилию в Telegram, а потом сохраняем в БД. В конце кода можем сделать так, чтобы бот работал постоянно.

bot.polling(none_stop=True)

Пришло время проверить, как работает код. Запускаем бота и пишем ему «Привет».

Теперь можем зайти в SQLiteStudio, и выбрав вкладку Данные посмотреть что получилось:

Как мы видим, данные уже в базе. Если их по какой-то причине нет, то обновите базу, нажав на синюю кнопку Обновить

import sqlite3 import telebot bot = telebot.TeleBot("token") conn = sqlite3.connect('db/database.db', check_same_thread=False) cursor = conn.cursor() def db_table_val(user_id: int, user_name: str, user_surname: str, username: str): cursor.execute('INSERT INTO test (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username)) conn.commit() @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, 'Добро пожаловать') @bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text.lower() == 'привет': bot.send_message(message.chat.id, 'Привет! Ваше имя добавлено в базу данных!') us_id = message.from_user.id us_name = message.from_user.first_name us_sname = message.from_user.last_name username = message.from_user.username db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username) bot.polling(none_stop=True) 

Заключение

В этой статье мы немного познакомились с sqlite3 и сделали простой скрипт добавления сведений о пользователе. Этого, конечно, не достаточно. В скором времени выпущу продолжение, в котором затрону тему удаления пользователей и редактирования полей.

Огромное спасибо за то, что прочитали. Надеюсь, кому-то помог. Всем удачи и поменьше багов в коде!

#4 – SQLite3. Подключение к базе данных

#4 – SQLite3. Подключение к базе данных

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

Видеоурок

База данных SQLite3 была выбрана в качестве примера по причине ее простоты настройки и использования. В точно таком же формате вы в будущем можете подключиться к любой другой базе данных, что поддерживается языком Python. Это могут быть: MySQL, PostgreSQL, MongoDB и многие другие.

Если ваш сайт работает с MySQL, то вы легко можете скачать коннектор для Питона, установить его через pip и подключиться к вашей БД, что используется на сайте. Далее вы сможете выводить ту же информацию, что выводите на сайте.

В ходе урока был показан общий принцип работы с базами данных. В будущем вы можете использовать любую другую БД на свое усмотрение.

Весь код будет доступен после подписки на проект!

Как привязать БД к телеграм боту python

Захотел написать телеграмм бота для записи сообщений пользователя в БД.
Так вот набросал код но надо еще добавить запись в БД. Вот код:

import telebot bot = telebot.TeleBot('Token') @bot.message_handler(commands=['start']) def start(message): bot.send_message(message.chat.id, f'Привет ! \n Если хочешь что то записать в базу данных пожалуйста введи /add', parse_mode='html') print(message) @bot.message_handler(commands=['add']) def add(message): bot.send_message(message.chat.id, f'Сори но я пока не придумал как записать данные в БД', parse_mode='html') print(message) bot.polling(none_stop=True) 

Отслеживать
задан 17 июл 2020 в 15:04
user388705 user388705

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

17 июл 2020 в 15:09
И как бы токен от тг очень к месту.
17 июл 2020 в 15:10

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Шаг 1: Создаем базу данных и подключаем её к коду.

Если желаете файликом: используем библиотеку sqlite3 (Guide) Если хотите использовать базу из интернета используем mysql.connector (Guide)

Шаг 2: Пишем запросы

По ходу изучения материала выше узнаете как делать запросы в базу. Вот пример создания записи с использованием данных из телеграмма:

cursor.execute("INSERT INTO table(id) VALUES('<>')".format(message.from_user.id)) 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *