Files
opds-library/app/db_utils.py
T

48 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""Модуль для работы с базой данных"""
import psycopg2
import psycopg2.extras
import os
DB_CONN = os.environ.get(
'DB_CONN',
'dbname=books user=postgres password=Karabas@Barabas host=172.20.0.4'
)
def get_db():
"""Возвращает соединение с БД"""
return psycopg2.connect(DB_CONN)
def get_cursor():
"""Возвращает соединение и курсор с RealDictCursor"""
conn = get_db()
cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
return conn, cur
def get_stats():
"""Возвращает статистику библиотеки"""
conn, cur = get_cursor()
cur.execute("SELECT COUNT(*) as cnt FROM books")
books_count = cur.fetchone()['cnt']
cur.execute("SELECT COUNT(*) as cnt FROM authors")
authors_count = cur.fetchone()['cnt']
cur.execute("SELECT COUNT(*) as cnt FROM series")
series_count = cur.fetchone()['cnt']
cur.execute("SELECT COUNT(*) as cnt FROM genres")
genres_count = cur.fetchone()['cnt']
conn.close()
return {
'books': books_count,
'authors': authors_count,
'series': series_count,
'genres': genres_count
}