This repository has been archived on 2026-07-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Telegram-bot-schedule/app/transfer_in_sql.py
T
2025-02-12 00:21:38 +03:00

104 lines
2.8 KiB
Python

#!/usr/bin/python3.3
from datetime import datetime
import os
from dotenv import load_dotenv
from sshtunnel import SSHTunnelForwarder
from psycopg2 import pool
import json
allow_update = True
load_dotenv()
"""
{
"1025872648": {
"username": "ahunuin",
"first_name": "Arseniy",
"last_name": "",
"group": "205",
"timeout": "10",
"allow_message": "yes",
"thread": "General"
},
"856850518": {
"username": "kr0sh_512",
"first_name": "Дмитрий",
"last_name": "",
"group": "202",
"timeout": "10",
"allow_message": "no",
"thread": "General"
}
}
"""
"""
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY,
username VARCHAR(255),
first_name VARCHAR(255),
last_name VARCHAR(255),
"group" VARCHAR(255) DEFAULT 'other',
timeout INT DEFAULT 10,
allow_message BOOLEAN DEFAULT TRUE,
thread VARCHAR(255) DEFAULT 'General',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
"""
if os.environ.get("ENV") == "dev":
print("DEV: Connecting to local database")
server = SSHTunnelForwarder(
(os.environ.get("SSH_HOST"), 22),
ssh_private_key=os.environ.get("SSH_KEY"),
ssh_username=os.environ.get("SSH_USER"),
ssh_password=(
os.environ.get("SSH_PASSWORD") if os.environ.get("SSH_PASSWORD") else None
),
remote_bind_address=("localhost", int(os.environ.get("DB_PORT"))),
)
server.start()
db = pool.SimpleConnectionPool(
1,
20,
user=os.environ.get("DB_USER"),
password=os.environ.get("DB_PASSWORD"),
host="localhost" if os.environ.get("ENV") == "dev" else os.environ.get("DB_HOST"),
port=(
server.local_bind_port
if os.environ.get("ENV") == "dev"
else os.environ.get("DB_PORT")
),
database=os.environ.get("DB_NAME"),
)
# Load users from JSON file
with open("users.json", "r", encoding="utf-8") as file:
users = json.load(file)
# Insert users into the database
with db.getconn() as conn:
with conn.cursor() as cursor:
for user_id, user_data in users.items():
cursor.execute(
"""
INSERT INTO users (id, username, first_name, last_name, "group", timeout, allow_message, thread)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
ON CONFLICT (id) DO NOTHING
""",
(
user_id,
user_data.get("username"),
user_data.get("first_name"),
user_data.get("last_name"),
user_data.get("group", "other"),
user_data.get("timeout", 10),
user_data.get("allow_message", "yes") == "yes",
user_data.get("thread", "General"),
),
)
conn.commit()