Add environment configuration, some fixes in main.py (size).
This commit is contained in:
parent
5505a521ff
commit
096efb7929
@ -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
|
||||
69
README.md
69
README.md
@ -1,19 +1,70 @@
|
||||
### Пример приложения для работы с БД
|
||||
|
||||
Используется:
|
||||
- PyQt5
|
||||
- PostgresSQL (psycopg2)
|
||||
- Neo4j
|
||||
Небольшое десктоп‑приложение на PyQt5 для работы с PostgreSQL и Neo4j.
|
||||
|
||||
Postgres:
|
||||
### Стек
|
||||
|
||||
- PyQt5 — графический интерфейс
|
||||
- PostgreSQL (psycopg2) — реляционная БД для пользователей
|
||||
- Neo4j — графовая БД для фильмов
|
||||
- python-dotenv — загрузка параметров подключения из файла `.env`
|
||||
|
||||
### Скриншоты
|
||||
|
||||
**PostgreSQL:**
|
||||
|
||||

|
||||
|
||||
Neo4j:
|
||||
**Neo4j:**
|
||||
|
||||

|
||||
|
||||
### Подключение к БД
|
||||
### Требования
|
||||
|
||||
Для подключения к БД указать в .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
13
main.py
@ -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
4
requirements.txt
Normal file
@ -0,0 +1,4 @@
|
||||
psycopg2-binary
|
||||
neo4j
|
||||
PyQt5
|
||||
python-dotenv
|
||||
Loading…
Reference in New Issue
Block a user