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_HOST = localhost
|
||||||
POSTGRES_PORT = 5432
|
POSTGRES_PORT = 5432
|
||||||
|
|
||||||
|
NEO_ACTIVE=false
|
||||||
NEO_USER=neo4j
|
NEO_USER=neo4j
|
||||||
NEO_PASS=pass
|
NEO_PASS=pass
|
||||||
NEO_HOST=neo4j://localhost:7687
|
NEO_HOST=neo4j://localhost:7687
|
||||||
69
README.md
69
README.md
@ -1,19 +1,70 @@
|
|||||||
### Пример приложения для работы с БД
|
### Пример приложения для работы с БД
|
||||||
|
|
||||||
Используется:
|
Небольшое десктоп‑приложение на PyQt5 для работы с PostgreSQL и Neo4j.
|
||||||
- PyQt5
|
|
||||||
- PostgresSQL (psycopg2)
|
|
||||||
- Neo4j
|
|
||||||
|
|
||||||
Postgres:
|
### Стек
|
||||||
|
|
||||||
|
- PyQt5 — графический интерфейс
|
||||||
|
- PostgreSQL (psycopg2) — реляционная БД для пользователей
|
||||||
|
- Neo4j — графовая БД для фильмов
|
||||||
|
- python-dotenv — загрузка параметров подключения из файла `.env`
|
||||||
|
|
||||||
|
### Скриншоты
|
||||||
|
|
||||||
|
**PostgreSQL:**
|
||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
### Подключение к БД
|
### Требования
|
||||||
|
|
||||||
Для подключения к БД указать в .env необходимые данные.
|
- Python 3.10+
|
||||||
Для выборки данных из Neo4j должен быть создан обучающий граф фильмов.
|
- Установленный 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
|
# You must call the super class method
|
||||||
QMainWindow.__init__(self)
|
QMainWindow.__init__(self)
|
||||||
|
|
||||||
self.setMinimumSize(QSize(480, 80)) # Set sizes
|
self.setMinimumSize(QSize(640, 480)) # Set sizes
|
||||||
self.setWindowTitle("postgre") # Set the window title
|
self.setWindowTitle("postgre") # Set the window title
|
||||||
central_widget = QWidget(self) # Create a central widget
|
central_widget = QWidget(self) # Create a central widget
|
||||||
self.setCentralWidget(central_widget) # Install the central widget
|
self.setCentralWidget(central_widget) # Install the central widget
|
||||||
@ -202,7 +202,14 @@ class NeoWindow(QWidget):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import sys
|
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)
|
createuUiversityDB(conn)
|
||||||
|
|
||||||
@ -222,6 +229,7 @@ if __name__ == "__main__":
|
|||||||
mw.load_data(users)
|
mw.load_data(users)
|
||||||
mw.show()
|
mw.show()
|
||||||
|
|
||||||
|
if os.getenv('NEO_ACTIVE') == 'true':
|
||||||
URI = NEO_HOST
|
URI = NEO_HOST
|
||||||
AUTH = (NEO_USER, NEO_PASS)
|
AUTH = (NEO_USER, NEO_PASS)
|
||||||
|
|
||||||
@ -233,4 +241,5 @@ if __name__ == "__main__":
|
|||||||
neo_window = NeoWindow(mw)
|
neo_window = NeoWindow(mw)
|
||||||
neo_window.load_data(records)
|
neo_window.load_data(records)
|
||||||
neo_window.show()
|
neo_window.show()
|
||||||
|
|
||||||
sys.exit(app.exec())
|
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