1
0
Fork 0
mirror of https://github.com/EDeev/mobiles_dataset.git synced 2026-10-07 20:49:44 +03:00

Подключение к БД — из переменных окружения DB_*, лишние импорты убраны

- database.py, однофайловая копия для exe и импорт датасета читают DB_HOST, DB_PORT,
  DB_NAME, DB_USER, DB_PASSWORD; прежние значения остались значениями по умолчанию;
- импорт находит датасет в корне репозитория независимо от текущей папки (или берёт путь
  первым аргументом);
- 20 неиспользуемых импортов и переопределений после склейки файлов (ruff).
This commit is contained in:
Деев Егор Викторович 2026-10-05 17:21:14 +00:00
parent acc9e6b207
commit 20a36a7d1c
3 changed files with 32 additions and 19 deletions

View file

@ -1,4 +1,5 @@
# db/database.py
import os
import psycopg2
from psycopg2.extras import RealDictCursor
from typing import List, Dict, Any, Optional
@ -20,8 +21,13 @@ class Database:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, host='localhost', port=5432, database='mobile_devices_db',
user='admin', password='password'):
def __init__(self, host=None, port=None, database=None, user=None, password=None):
# Параметры подключения: аргументы, затем переменные окружения DB_*, затем значения для локальной разработки
host = host or os.environ.get('DB_HOST', 'localhost')
port = port or int(os.environ.get('DB_PORT', '5432'))
database = database or os.environ.get('DB_NAME', 'mobile_devices_db')
user = user or os.environ.get('DB_USER', 'admin')
password = password or os.environ.get('DB_PASSWORD', 'password')
if not hasattr(self, 'initialized'):
self.connection_params = {
'host': host,

View file

@ -5,24 +5,21 @@ from PyQt6.QtWidgets import QApplication
from PyQt6.QtCore import Qt
# ui/main_window.py
import sys
from PyQt6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
QTableWidget, QTableWidgetItem, QPushButton, QTabWidget,
QLabel, QLineEdit, QComboBox, QSpinBox, QMessageBox,
QDialog, QFormLayout, QDialogButtonBox, QHeaderView,
QToolBar, QStatusBar, QGroupBox, QTextEdit, QInputDialog
)
from PyQt6.QtCore import Qt, QTimer, pyqtSignal
from PyQt6.QtGui import QAction, QIcon, QFont
from PyQt6.QtGui import QAction, QFont
from typing import Optional, Dict, Any
import logging
# db/database.py
import os
import psycopg2
from psycopg2.extras import RealDictCursor
from typing import List, Dict, Any, Optional
import logging
from typing import List
from contextlib import contextmanager
logger = logging.getLogger(__name__)
@ -48,8 +45,13 @@ class Database:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, host='localhost', port=5432, database='mobile_devices_db',
user='admin', password='password'):
def __init__(self, host=None, port=None, database=None, user=None, password=None):
# Параметры подключения: аргументы, затем переменные окружения DB_*, затем значения для локальной разработки
host = host or os.environ.get('DB_HOST', 'localhost')
port = port or int(os.environ.get('DB_PORT', '5432'))
database = database or os.environ.get('DB_NAME', 'mobile_devices_db')
user = user or os.environ.get('DB_USER', 'admin')
password = password or os.environ.get('DB_PASSWORD', 'password')
if not hasattr(self, 'initialized'):
self.connection_params = {
'host': host,

View file

@ -1,8 +1,9 @@
import os
import sys
import pandas as pd
import psycopg2
from psycopg2.extras import execute_values
import re
from typing import Optional, Dict, Tuple
from typing import Optional, Dict
import logging
# Настройка логирования
@ -245,12 +246,13 @@ class MobileDataImporter:
# Использование скрипта
if __name__ == "__main__":
# Конфигурация подключения к БД
# Параметры подключения — из переменных окружения DB_* (по умолчанию — локальная разработка)
db_config = {
'host': 'localhost',
'port': 5432,
'database': 'mobile_devices_db',
'user': 'admin',
'password': 'password' # Замените на ваш пароль
'host': os.environ.get('DB_HOST', 'localhost'),
'port': int(os.environ.get('DB_PORT', '5432')),
'database': os.environ.get('DB_NAME', 'mobile_devices_db'),
'user': os.environ.get('DB_USER', 'admin'),
'password': os.environ.get('DB_PASSWORD', 'password'),
}
# Создаем импортер и выполняем импорт
@ -258,6 +260,9 @@ if __name__ == "__main__":
try:
importer.connect()
importer.import_data('Mobiles Dataset 2025.csv') # Укажите путь к вашему файлу
# Датасет лежит в корне репозитория; другой файл можно передать первым аргументом
csv_path = sys.argv[1] if len(sys.argv) > 1 else os.path.join(
os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'Mobiles Dataset 2025.csv')
importer.import_data(csv_path)
finally:
importer.disconnect()