104 lines
3.3 KiB
Markdown
104 lines
3.3 KiB
Markdown
### Пример приложения для работы с БД
|
||
|
||
Небольшое десктоп-приложение на PyQt5 для работы с PostgreSQL, Neo4j, Apache AGE, InfluxDB 3 Core и MongoDB.
|
||
|
||
### Стек
|
||
|
||
- PyQt5 — графический интерфейс
|
||
- PostgreSQL (psycopg2) — реляционная БД для пользователей
|
||
- Neo4j — графовая БД
|
||
- Apache AGE — графовая БД в рамках PostgreSQL
|
||
- InfluxDB 3 Core — БД временных рядов
|
||
- MongoDB (pymongo) — документ-ориентированная БД
|
||
|
||
### Скриншоты
|
||
|
||
**PostgreSQL:**
|
||
|
||

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

|
||
|
||
### Требования
|
||
|
||
- Python 3.10+
|
||
- Установленный PostgreSQL и доступ к серверу БД
|
||
- Установленный Neo4j и загруженный обучающий граф фильмов (Movie Graph example)
|
||
- Для Apache AGE: установленное расширение `age` в PostgreSQL и доступ к базе, где оно включено
|
||
- Для InfluxDB 3 Core: запущенный сервер, заранее созданная база и токен с правами на запись и чтение
|
||
- Для MongoDB: запущенный MongoDB сервер и доступ к целевой базе
|
||
|
||
### Настройка окружения
|
||
|
||
1. Переименовать файл примера переменных окружения `.env_example` в `.env`:
|
||
|
||
|
||
Затем откройте `.env` и при необходимости измените значения:
|
||
|
||
```env
|
||
POSTGRES_ACTIVE=false # включить PostgreSQL-часть приложения, установив true
|
||
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
|
||
|
||
AGE_ACTIVE=false # включить Apache AGE, установив true
|
||
AGE_USER=postgres
|
||
AGE_PASS=your_password
|
||
AGE_HOST=localhost
|
||
AGE_PORT=5432
|
||
AGE_DB=university
|
||
AGE_GRAPH_NAME=movie_graph
|
||
|
||
INFLUX_ACTIVE=false # включить InfluxDB 3 Core, установив true
|
||
INFLUXDB3_HOST=http://localhost:8181
|
||
INFLUXDB3_AUTH_TOKEN=your_token
|
||
INFLUXDB3_DATABASE=sensors
|
||
|
||
MONGO_ACTIVE=false # включить MongoDB, установив true
|
||
MONGO_URI=mongodb://localhost:27017
|
||
MONGO_DB=movie_data
|
||
MONGO_COLLECTION=movies
|
||
```
|
||
|
||
2. Создайте и активируйте виртуальное окружение:
|
||
|
||
Windows, PowerShell:
|
||
|
||
```powershell
|
||
cd C:\Users\Litoq\Documents\Projects\db_example_app
|
||
py -m venv .venv
|
||
.\.venv\Scripts\Activate.ps1
|
||
```
|
||
|
||
Linux, bash:
|
||
|
||
```bash
|
||
cd ~/Projects/db_example_app
|
||
python3 -m venv .venv
|
||
source .venv/bin/activate
|
||
```
|
||
|
||
3. Установите зависимости:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### Запуск приложения
|
||
|
||
В активированном виртуальном окружении выполните:
|
||
|
||
```powershell
|
||
py main.py
|
||
```
|
||
|
||
Для PostgreSQL, Neo4j, Apache AGE, InfluxDB 3 Core и MongoDB запросы выполняются только при `*_ACTIVE=true`. |