Телеграм-бот, работающий в 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. Такой подход позволяет легко масштабировать решение, обеспечивать безопасность данных и удобство развертывания. Теперь ваш бот готов к использованию!
Комментарии