Переход с SQLite3 на PostgreSQL
This commit is contained in:
parent
0afe9f974f
commit
0eb0685115
@ -1,3 +1,7 @@
|
||||
### 2.0.0
|
||||
|
||||
- переход с SQLite3 на PostgreSQL
|
||||
|
||||
### 1.1.0
|
||||
|
||||
- Добавлен выхлом ошибок `try...catch` в логи
|
||||
|
@ -30,7 +30,11 @@ cp env.example .env
|
||||
- `APP_HASH` — Хэш приложения Telegram.
|
||||
- `ACCOUNT` — Имя аккаунта пользователя Telegram (_например `db_o_qp`_).
|
||||
- `LOG_PATH` — Путь в файлу логов (_например `/tmp/test.log`_).
|
||||
- `DB_PATH` — Путь к файлу базы данных SQLite3 (_например `./db.sqlite`_).
|
||||
- `DB_HOST` — Хост базы данных PostgreSQL
|
||||
- `DB_PORT` — Порт сервера базы данных
|
||||
- `DB_NAME` — Имя базы данных
|
||||
- `DB_USER` — Имя пользователя
|
||||
- `DB_PASSWORD` — Пароль пользователя
|
||||
|
||||
|
||||
### 🐦🔥 Настройка виртуального окружения и загрузка бибилотек
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Информация о программе
|
||||
__author__ = 'Alexander Popov'
|
||||
__version__ = (1, 1, 0)
|
||||
__version__ = (2, 0, 0)
|
||||
|
||||
# Импорт модулей стандартной библиотеки
|
||||
from os import getenv
|
||||
@ -18,7 +18,13 @@ load_dotenv() # Выполняет чтение .env
|
||||
client = Client(getenv('ACCOUNT'), api_id=getenv('APP_ID'), api_hash=getenv('APP_HASH'))
|
||||
"""Клиент Telegram"""
|
||||
|
||||
db = DataBase(getenv('DB_PATH'))
|
||||
db = DataBase(
|
||||
getenv('DB_HOST'),
|
||||
int(getenv('DB_PORT')),
|
||||
getenv('DB_NAME'),
|
||||
getenv('DB_USER'),
|
||||
getenv('DB_PASSWORD'),
|
||||
)
|
||||
"""База данных"""
|
||||
|
||||
logger.add(getenv('LOG_PATH'), compression='zip')
|
||||
|
28
app/db.py
28
app/db.py
@ -1,19 +1,35 @@
|
||||
# Импорт модулей стандартной библиотеки
|
||||
import sqlite3
|
||||
import json
|
||||
|
||||
# Импорт сторонних модулей
|
||||
import psycopg2
|
||||
|
||||
|
||||
class DataBase(object):
|
||||
"""Класс для работы с базой данных"""
|
||||
|
||||
def __init__(self, path):
|
||||
def __init__(self, host: str, port: int, name: str, user: str, password: str):
|
||||
super(DataBase, self).__init__()
|
||||
self.path = path
|
||||
"""Путь к файлу базы данных SQLite3"""
|
||||
self.host = host
|
||||
"""Хост PostgreSQL базы данных"""
|
||||
self.port = port
|
||||
"""Порт сервера базы данных"""
|
||||
self.name = name
|
||||
"""Имя базы данных"""
|
||||
self.user = user
|
||||
"""Имя пользователя"""
|
||||
self.password = password
|
||||
"""Пароль пользователя"""
|
||||
|
||||
def connect(self) -> bool:
|
||||
"""Выполняет подключение к базе данных"""
|
||||
self.conn = sqlite3.connect(self.path)
|
||||
self.conn = psycopg2.connect(
|
||||
dbname=self.name,
|
||||
host=self.host,
|
||||
user=self.user,
|
||||
password=self.password,
|
||||
port=self.port,
|
||||
)
|
||||
return True
|
||||
|
||||
def close(self) -> bool:
|
||||
@ -34,7 +50,7 @@ class DataBase(object):
|
||||
table = 'donates'
|
||||
|
||||
cur = self.conn.cursor()
|
||||
cur.execute('INSERT INTO {table} (\'data\') VALUES (\'{data}\')'.format(table=table, data=json.dumps(data)))
|
||||
cur.execute('INSERT INTO {table} ("data") VALUES (\'{data}\')'.format(table=table, data=json.dumps(data)))
|
||||
self.commit()
|
||||
cur.close()
|
||||
|
||||
|
@ -2,4 +2,8 @@ APP_ID=""
|
||||
APP_HASH=""
|
||||
ACCOUNT=""
|
||||
LOG_PATH="/tmp/test.log"
|
||||
DB_PATH="./db.sqlite"
|
||||
DB_HOST=""
|
||||
DB_PORT=""
|
||||
DB_NAME=""
|
||||
DB_USER=""
|
||||
DB_PASSWORD=""
|
||||
|
@ -1,12 +1,8 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS 'wins'
|
||||
(
|
||||
'id' Integer PRIMARY KEY AUTOINCREMENT,
|
||||
'timestamp' DateTime NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP, 'localtime')),
|
||||
'data' Text NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS 'index_timestamp' ON 'wins' ('timestamp');
|
||||
CREATE TABLE "public"."wins" (
|
||||
"data" JSON NOT NULL,
|
||||
"timestamp" Timestamp Without Time Zone DEFAULT CURRENT_TIMESTAMP );
|
||||
;
|
||||
|
||||
COMMIT;
|
||||
|
Loading…
Reference in New Issue
Block a user