48 lines
1.2 KiB
Python
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
|
|
} |