Add environment configuration, some fixes in main.py (size).

This commit is contained in:
Denis Volkov 2026-03-10 01:03:29 +03:00
parent 5505a521ff
commit 096efb7929
4 changed files with 85 additions and 20 deletions

View File

@ -4,6 +4,7 @@ POSTGRES_PASS = pass
POSTGRES_HOST = localhost
POSTGRES_PORT = 5432
NEO_ACTIVE=false
NEO_USER=neo4j
NEO_PASS=pass
NEO_HOST=neo4j://localhost:7687

View File

@ -1,19 +1,70 @@
### Пример приложения для работы с БД
Используется:
- PyQt5
- PostgresSQL (psycopg2)
- Neo4j
Небольшое десктоп‑приложение на PyQt5 для работы с PostgreSQL и Neo4j.
Postgres:
### Стек
- PyQt5 — графический интерфейс
- PostgreSQL (psycopg2) — реляционная БД для пользователей
- Neo4j — графовая БД для фильмов
- python-dotenv — загрузка параметров подключения из файла `.env`
### Скриншоты
**PostgreSQL:**
![form.png](form.png)
Neo4j:
**Neo4j:**
![neo_form.png](neo_form.png)
### Подключение к БД
### Требования
Для подключения к БД указать в .env необходимые данные.
Для выборки данных из Neo4j должен быть создан обучающий граф фильмов.
- Python 3.10+
- Установленный PostgreSQL и доступ к серверу БД
- Установленный Neo4j и загруженный обучающий граф фильмов (Movie Graph example)
### Настройка окружения
1. Переименовать файл примера переменных окружения `.env_example` в `.env`:
Затем откройте `.env` и при необходимости измените значения:
```env
POSTGRES_USER=postgres
POSTGRES_DB=university
POSTGRES_PASS=your_password
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
NEO_ACTIVE=false # включить Neo4j-часть приложения, установив true
NEO_USER=neo4j
NEO_PASS=your_password
NEO_HOST=neo4j://localhost:7687
```
2. Создайте и активируйте виртуальное окружение (Windows, PowerShell):
```powershell
cd C:\Users\Litoq\Documents\Projects\db_example_app
py -m venv .venv
.\.venv\Scripts\Activate.ps1
```
3. Установите зависимости:
```powershell
pip install -r requirements.txt
```
### Запуск приложения
В активированном виртуальном окружении выполните:
```powershell
py main.py
```
Приложение подключится к PostgreSQL, создаст БД/таблицу и тестовые данные (если их ещё нет), выполнит запрос к Neo4j (если активно) и отобразит результаты в двух окнах.

13
main.py
View File

@ -111,7 +111,7 @@ class MainWindow(QMainWindow):
# You must call the super class method
QMainWindow.__init__(self)
self.setMinimumSize(QSize(480, 80)) # Set sizes
self.setMinimumSize(QSize(640, 480)) # Set sizes
self.setWindowTitle("postgre") # Set the window title
central_widget = QWidget(self) # Create a central widget
self.setCentralWidget(central_widget) # Install the central widget
@ -202,7 +202,14 @@ class NeoWindow(QWidget):
if __name__ == "__main__":
import sys
conn = psycopg2.connect("user=postgres password=456 host=localhost port=5432")
conn = psycopg2.connect(
"user={0} password={1} host={2} port={3}".format(
POSTGRES_USER,
POSTGRES_PASS,
POSTGRES_HOST,
POSTGRES_PORT,
)
)
createuUiversityDB(conn)
@ -222,6 +229,7 @@ if __name__ == "__main__":
mw.load_data(users)
mw.show()
if os.getenv('NEO_ACTIVE') == 'true':
URI = NEO_HOST
AUTH = (NEO_USER, NEO_PASS)
@ -233,4 +241,5 @@ if __name__ == "__main__":
neo_window = NeoWindow(mw)
neo_window.load_data(records)
neo_window.show()
sys.exit(app.exec())

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
psycopg2-binary
neo4j
PyQt5
python-dotenv