Add MongoDB support
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import importlib
|
||||
import os
|
||||
import sys
|
||||
|
||||
@@ -10,6 +11,8 @@ from psycopg2.errors import DuplicateDatabase
|
||||
from PyQt5.QtCore import QSize, Qt
|
||||
from PyQt5.QtWidgets import QApplication, QGridLayout, QHeaderView, QMainWindow, QTableWidget, QTableWidgetItem, QWidget
|
||||
|
||||
MongoClient = importlib.import_module("pymongo").MongoClient
|
||||
|
||||
load_dotenv()
|
||||
|
||||
POSTGRES_USER = os.getenv("POSTGRES_USER")
|
||||
@@ -37,6 +40,11 @@ INFLUXDB3_HOST = os.getenv("INFLUXDB3_HOST", "http://localhost:8181")
|
||||
INFLUXDB3_AUTH_TOKEN = os.getenv("INFLUXDB3_AUTH_TOKEN")
|
||||
INFLUXDB3_DATABASE = os.getenv("INFLUXDB3_DATABASE", "sensors")
|
||||
|
||||
MONGO_ACTIVE = os.getenv("MONGO_ACTIVE", "false").lower() == "true"
|
||||
MONGO_URI = os.getenv("MONGO_URI", "mongodb://localhost:27017")
|
||||
MONGO_DB = os.getenv("MONGO_DB", "movie_data")
|
||||
MONGO_COLLECTION = os.getenv("MONGO_COLLECTION", "movies")
|
||||
|
||||
USER_SEED_DATA = [
|
||||
(1, "Ivan", 15),
|
||||
(2, "Igor", 22),
|
||||
@@ -203,6 +211,34 @@ ORDER BY time, measurement
|
||||
return headers, values
|
||||
|
||||
|
||||
def connect_mongo():
|
||||
return MongoClient(MONGO_URI)
|
||||
|
||||
|
||||
def insert_mongo_movies(collection):
|
||||
if collection.count_documents({}) > 0:
|
||||
print("MongoDB collection is already seeded.")
|
||||
return
|
||||
|
||||
collection.insert_many(
|
||||
[
|
||||
{"title": "Apollo 13", "released": 1995},
|
||||
{"title": "The Matrix", "released": 1999},
|
||||
{"title": "Toy Story", "released": 1995},
|
||||
{"title": "Alien", "released": 1979},
|
||||
]
|
||||
)
|
||||
print("MongoDB movies inserted.")
|
||||
|
||||
|
||||
def select_mongo_movies(collection):
|
||||
cursor = collection.find(
|
||||
{"released": {"$gte": 1990, "$lt": 2000}},
|
||||
{"_id": 0, "title": 1},
|
||||
).sort("title", 1)
|
||||
return [document["title"] for document in cursor]
|
||||
|
||||
|
||||
def load_users():
|
||||
admin_conn = connect_postgres("postgres")
|
||||
try:
|
||||
@@ -378,4 +414,18 @@ if __name__ == "__main__":
|
||||
except Exception as error:
|
||||
print(f"InfluxDB 3 Core load failed: {error}")
|
||||
|
||||
if MONGO_ACTIVE:
|
||||
try:
|
||||
with connect_mongo() as mongo_client:
|
||||
movies_collection = mongo_client[MONGO_DB][MONGO_COLLECTION]
|
||||
insert_mongo_movies(movies_collection)
|
||||
mongo_movies = select_mongo_movies(movies_collection)
|
||||
|
||||
mongo_window = DataWindow("mongodb", ["Info"], main_window, len(graph_windows))
|
||||
mongo_window.load_data([(title,) for title in mongo_movies])
|
||||
mongo_window.show()
|
||||
graph_windows.append(mongo_window)
|
||||
except Exception as error:
|
||||
print(f"MongoDB load failed: {error}")
|
||||
|
||||
sys.exit(app.exec())
|
||||
Reference in New Issue
Block a user