PostgreSQL для Telegram-ботов: хранение данных пользователей безопасно
PostgreSQL для Telegram-ботов: хранение данных пользователей безопасно Ваш Telegram-бот собирает данные: контакты пользователей, заказы, платежи, предпочтения. Если хранить это в обычных текстовых файлах или памяти, при перезагрузке сервера всё потеряется. Нужна надёжная база данных. PostgreSQL — идеальный выбор. Почему именно PostgreSQL? Надежность — данные хранятся безопасно, даже при сбоях Масштабируемость — база может содержать миллионы записей Безопасность — встроенная защита от SQL-инъекций Бесплатная — open-source, никаких лицензий Мощные возможности — JSON, полнотекстовый поиск, транзакции Базовая схема для бота -- Таблица пользователей CREATE TABLE users ( id SERIAL PRIMARY KEY, telegram_id BIGINT UNIQUE NOT NULL, username VARCHAR(255), first_name VARCHAR(255), phone VARCHAR(20), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Таблица заказов CREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id), amount DECIMAL(10, 2), status VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Таблица платежей CREATE TABLE payments ( id SERIAL PRIMARY KEY, order_id INTEGER REFERENCES orders(id), amount DECIMAL(10, 2), payment_method VARCHAR(50), status VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Подключение к Python import psycopg2 conn = psycopg2.connect( host="localhost", database="botdb", user="botuser", password="secure_password" ) cursor = conn.cursor() # Добавить пользователя cursor.execute( "INSERT INTO users (telegram_id, username, first_name) VALUES (%s, %s, %s)", (12345, "john_doe", "John") ) conn.commit() # Получить пользователя cursor.execute("SELECT * FROM users WHERE telegram_id = %s", (12345,)) user = cursor.fetchone() conn.close() Лучшие практики 1. Индексы для быстрого поиска ...