feat/db-init #3

Open
Nitro wants to merge 41 commits from feat/db-init into dev
3 changed files with 57 additions and 0 deletions
Showing only changes of commit 506f2f3f39 - Show all commits
+3
View File
@@ -0,0 +1,3 @@
from .connection import get_connection, get_db_config
Outdated
Review

Файл не нужен

Файл не нужен
__all__ = ['get_connection', 'get_db_config']
+54
View File
@@ -0,0 +1,54 @@
# database/connection.py
import psycopg2
import os
from contextlib import contextmanager
from typing import Generator
from utils.loadDotEnv import initializeENV
initializeENV()
def get_db_config() -> dict:
Outdated
Review

Добавь подключение по ссылке вместо этого

Добавь подключение по ссылке вместо этого
Outdated
Review

Зачем

Зачем
Outdated
Review

@Nitro, как раз наоборот: зачем отдельно вводить кучу переменных? Ссылка стандартизирована и удобнее

@Nitro, как раз наоборот: зачем отдельно вводить кучу переменных? Ссылка стандартизирована и удобнее
return {
'host': os.getenv('DB_HOST', 'localhost'),
'port': int(os.getenv('DB_PORT', 5432)),
'database': os.getenv('DB_NAME', 'warehouse_db'),
'user': os.getenv('DB_USER', 'postgres'),
'password': os.getenv('DB_PASSWORD', '')
}
@contextmanager
def get_connection() -> Generator[psycopg2.extensions.connection, None, None]:
conn = None
try:
config = get_db_config()
conn = psycopg2.connect(**config)
print("Подключение к БД установлено")
Outdated
Review

Поменяй на логи

Поменяй на логи
yield conn
except psycopg2.OperationalError as e:
print(f"Ошибка подключения к БД: {e}")
Outdated
Review

Поменяй на логи

Поменяй на логи
raise
except Exception as e:
print(f"Неожиданная ошибка: {e}")
Outdated
Review

Поменяй на логи

Поменяй на логи
Outdated
Review

А в чём смысл обрабатывать ошибку, которая всё равно уронит процесс? Если она неожиданная, то и обрабатывать не надо

А в чём смысл обрабатывать ошибку, которая всё равно уронит процесс? Если она неожиданная, то и обрабатывать не надо
if conn:
conn.rollback()
raise
Outdated
Review

Зачем?

Зачем?
finally:
if conn:
conn.close()
print("БД закрыта")
Outdated
Review

Поменяй на логи

Поменяй на логи
def test_connection() -> bool:
try:
with get_connection() as conn:
with conn.cursor() as cur:
cur.execute("SELECT version();")
version = cur.fetchone()
print(f" Версия PostgreSQL: {version[0]}")
Outdated
Review

Поменяй на логи

Поменяй на логи
return True
except Exception as e:
print(f"Тест подключения бд провален: {e}")
Outdated
Review

Поменяй на логи

Поменяй на логи
return False
View File