Телеграм-бот, работающий в Docker-контейнере с подключенной базой данных MS SQL.

Программирование
05.02.2025
Добавить в избранное
Телеграм-бот, работающий в Docker-контейнере с подключенной базой данных MS SQL.
Фото:
Телеграм-бот, работающий в Docker-контейнере с подключенной базой данных MS SQL.

Телеграм-боты становятся все более популярными инструментами для автоматизации различных задач. Одним из ключевых требований к современным ботам является работа с базами данных для хранения и обработки информации. В этой статье рассмотрим, как создать Телеграм-бота с подключением к базе данных MS SQL, развернутого в контейнере Docker.

Что потребуется?

Перед началом работы убедитесь, что у вас установлены:

  • Docker и Docker Compose
  • Python 3.x
  • Библиотека python-telegram-bot
  • Библиотека pyodbc для работы с MS SQL
  • SQL Server, развернутый в контейнере Docker

Разворачивание MS SQL в Docker

Для запуска MS SQL Server в контейнере используем следующий docker-compose.yml:

version: '3.8'
services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2019-latest
    container_name: mssql_container
    restart: always
    environment:
      SA_PASSWORD: "YourStrong!Passw0rd"
      ACCEPT_EULA: "Y"
    ports:
      - "1433:1433"
    volumes:
      - mssql_dаta:/var/opt/mssql

volumes:
  mssql_dаta:

Запустите контейнер командой:

docker-compose up -d

Подключение бота к базе данных

Создадим простого Телеграм-бота, который будет взаимодействовать с MS SQL Server.

Установка зависимостей

Установите необходимые библиотеки:

pip install python-telegram-bot pyodbc

Код бота

Создадим файл bot.py:

from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext
import pyodbc

# Параметры подключения к базе данных
server = "localhost,1433"
database = "TestDB"
username = "sa"
password = "YourStrong!Passw0rd"
driver = "{ODBC Driver 17 for SQL Server}"

# Функция подключения к базе данных
def get_connection():
    conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}'
    return pyodbc.connect(conn_str)

# Команда /start
def start(update: Update, context: CallbackContext) -> None:
    update.message.reply_text("Привет! Я Телеграм-бот, работающий с MS SQL.")

# Команда /get_data
def get_data(update: Update, context: CallbackContext) -> None:
    conn = get_connection()
    cursor = conn.cursor()
    cursor.execute("SELECT TOP 1 name FROM Users")
    row = cursor.fetchone()
    conn.close()
    update.message.reply_text(f"Первый пользователь: {row[0]}")

# Основная функция
def main():
    updater = Updater("YOUR_BOT_TOKEN")
    dp = updater.dispatcher
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("get_data", get_data))
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Разворачивание бота в Docker

Создадим Dockerfile для контейнеризации бота:

FROM python:3.9
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "bot.py"]

Создадим docker-compose.yml для бота:

version: '3.8'
services:
  bot:
    build: .
    container_name: telegram_bot
    depends_on:
      - mssql
    environment:
      - BOT_TOKEN=your_bot_token
    restart: always

Запустим бота:

docker-compose up -d

Мы создали Телеграм-бота, который взаимодействует с MS SQL Server, развернутым в Docker. Такой подход позволяет легко масштабировать решение, обеспечивать безопасность данных и удобство развертывания. Теперь ваш бот готов к использованию!

Автор статьи

Комментарии

Минимальная длина комментария - 50 знаков. комментарии модерируются
Или
Кликните на изображение чтобы обновить код, если он неразборчив
Комментариев еще нет. Вы можете стать первым!