mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-21 23:23:55 +02:00
How to update data in StagingDB on K8 Cluster
This commit is contained in:
316
Jupyter/mongoDB/02_How_to_write_to_MongoDB_StagingDB.ipynb
Normal file
316
Jupyter/mongoDB/02_How_to_write_to_MongoDB_StagingDB.ipynb
Normal file
@ -0,0 +1,316 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "3730fd2c",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import configurationFH as conf #hier wird die Configuration für das K8 cluster verwendet\n",
|
||||||
|
"import aki_prj23_transparenzregister.utils.mongo as mongo"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "305f2cc1",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"Für die ersten Experimente zum Lesen und Schreiben von Daten, bieten sich die Tutorials von PyMongo an:\n",
|
||||||
|
"\n",
|
||||||
|
"https://pymongo.readthedocs.io/en/stable/tutorial.html"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "e7c41906",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Erstellen eines Connection-Objekts\n",
|
||||||
|
"## utils.mongo.MongoConnection\n",
|
||||||
|
"Dem Connection Object werden die Credentials und Name der Datenbank übergeben, um ein Verbindungsobjekt zu erzeugen."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "efecf29d",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#Create Connection-Object\n",
|
||||||
|
"MongoObject=mongo.MongoConnection(conf.HOSTNAME,conf.DATABASE,conf.PORT,conf.USERNAME,conf.PASSWORD)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "6975afde",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Verbindungsherstellung\n",
|
||||||
|
"## utils.mongo.MongoConnector\n",
|
||||||
|
"Das erzeugte Objekt stellt mit der pymongo-Bilbiothek eine Verbindung zur Datenbank her."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"id": "e755c39b",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#create Connection\n",
|
||||||
|
"MongoConnect=mongo.MongoConnector(MongoObject)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "97d3ef0c",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Erzeuge eine Collection-Instanz\n",
|
||||||
|
"Jede Mongo Datenbank kann mehrere Collections beinhalten. Um auf diese unabhängigen Collections zuzugreifen, muss eine Instanz erstellt werden."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"id": "34e19d26",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#create Object for news-collection\n",
|
||||||
|
"CollNews=MongoConnect.database[\"news\"]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "ed7a99f7",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Auslesen der Newsartikel\n",
|
||||||
|
"\n",
|
||||||
|
"Mit der find()-Methode wird eine Anfrage an die Datenbank gesendet, welche alle Dokumente der gewählten Collection zurückgibt.\n",
|
||||||
|
"Der cursor verweist somit auf das erste Element der Collection.\n",
|
||||||
|
"Mit der find-Methode können auch einzelne Elemente der Collection gefunden werden, die definierte Attribute erfüllen.\n",
|
||||||
|
"\n",
|
||||||
|
"Der Code führt eine Abfrage in der MongoDB-Sammlung \"news\" durch, erhält die Ergebnisse in einem Cursor und wandelt den Cursor dann in eine Python-Liste um, um auf die Daten einfacher zugreifen zu können. Die Liste NewsList enthält nun alle Dokumente aus der \"news\"-Sammlung als Python-Listenobjekte. Jedes Element in der Liste entspricht einem Dokument aus der Datenbank."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "495d5448",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#get all documents from collection\n",
|
||||||
|
"cursor=CollNews.find({})\n",
|
||||||
|
"NewsList=list(cursor)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"id": "192c5199",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"918"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"len(NewsList)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "3de93755",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Auswählen eines Artikels"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"id": "4978218a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"{'_id': 'tagesschau_90fb6340-abc5-40bb-85c3-3cfd98aa795a',\n",
|
||||||
|
" 'title': 'GDL kündigt neue Streiks an',\n",
|
||||||
|
" 'date': '2023-06-28T16:46:37.324+02:00',\n",
|
||||||
|
" 'text': ' Die Deutsche Bahn soll wieder bestreikt werden. Die Lokführergewerkschaft GDL hat neue Arbeitskämpfe angekündigt, nachdem die Tarifverhandlungen mit der Bahn gescheitert waren. Ab Freitag könnten die Arbeitsniederlegungen beginnen. Die Lokführergewerkschaft GDL hat erneute Streiks bei der Deutschen Bahn angekündigt. Zum genauen Zeitpunkt und Dauer machte GDL-Chef Claus Weselsky noch keine Angaben. Er teilte lediglich mit, dass am Mittwoch und Donnerstag nicht gestreikt werde. Die GDL werde den Streik \"rechtzeitig ankündigen\". Vor der Entscheidung der GDL-Spitzengremien für die Wiederaufnahme von\\xa0Streiks hatte Weselsky von rund 100 Stunden Arbeitskampf gesprochen. Das wären mehr als vier Tage. Die GDL hatte im Herbst bereits sechs Mal bundesweit zu Arbeitsniederlegungen aufgerufen und damit den Bahnverkehr stark eingeschränkt. Die\\xa0GDL warf der Bahn vor der Streik-Entscheidung vor, in der laufenden Tarifrunde auf Zeit zu spielen. Der Konzern habe in der jüngsten Runde am 11. Februar zuvor gemachte Zusagen zurückgenommen. Die Bahn habe die Chance, den Arbeitskampf noch abzuwenden, wenn sie ein Positionspapier der GDL doch noch unterzeichne, so Weselsky. Das bundeseigene Unternehmen hatte zuvor eine Unterschrift unter das Dokument abgelehnt. Damit erfüllte sie ein von der GDL gesetztes Ultimatum nicht. In dem Papier sind Grundpositionen der Gewerkschaft festgeschrieben. Aus Sicht der Bahn enthält es aber nicht den Sachstand, sondern Maximalforderungen der GDL. \"Es gibt keinerlei Veranlassung, der Verhandlungsstand ist eigentlich so, dass wir zu Ergebnissen kommen könnten\", sagte Bahn-Personalvorstand Ulrich Weber. \"Von daher halte ich diese angekündigten Streiks für unverhältnismäßig.\" Da sich die GDL noch nicht auf einen Termin und eine Dauer festgelegt hat, habe er die Hoffnung, den Arbeitskampf in Gesprächen mit der Gewerkschaft noch abwenden zu können. Neben verkürzten Arbeitszeiten und fünf Prozent mehr Geld verlangt die GDL auch für ihre Mitglieder außerhalb der Lokführer-Berufsgruppe eigenständige Tarifverträge. Diese waren bislang von der konkurrierenden DGB-Gewerkschaft\\xa0EVG ausgehandelt worden. Die Bahn will nach eigenem Bekunden in den parallel geführten Verhandlungen unterschiedliche Regelungen für ein und dieselbe Berufsgruppe verhindern. Die Eisenbahn- und Verkehrsgewerkschaft (EVG) will ebenfalls voneinander abweichende Tarifverträge vermeiden. Dieses Thema im Programm: v',\n",
|
||||||
|
" 'source_url': 'https://www.tagesschau.de/wirtschaft/gdl-bahn-streik-105.html',\n",
|
||||||
|
" 'company': '[Deutsche Bahn, GDL]'}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"NewsList[212]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"id": "0ccba849",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Erweitern des JSONS"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"id": "9904c9c3",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"{'_id': 'tagesschau_90fb6340-abc5-40bb-85c3-3cfd98aa795a', 'title': 'GDL kündigt neue Streiks an', 'date': '2023-06-28T16:46:37.324+02:00', 'text': ' Die Deutsche Bahn soll wieder bestreikt werden. Die Lokführergewerkschaft GDL hat neue Arbeitskämpfe angekündigt, nachdem die Tarifverhandlungen mit der Bahn gescheitert waren. Ab Freitag könnten die Arbeitsniederlegungen beginnen. Die Lokführergewerkschaft GDL hat erneute Streiks bei der Deutschen Bahn angekündigt. Zum genauen Zeitpunkt und Dauer machte GDL-Chef Claus Weselsky noch keine Angaben. Er teilte lediglich mit, dass am Mittwoch und Donnerstag nicht gestreikt werde. Die GDL werde den Streik \"rechtzeitig ankündigen\". Vor der Entscheidung der GDL-Spitzengremien für die Wiederaufnahme von\\xa0Streiks hatte Weselsky von rund 100 Stunden Arbeitskampf gesprochen. Das wären mehr als vier Tage. Die GDL hatte im Herbst bereits sechs Mal bundesweit zu Arbeitsniederlegungen aufgerufen und damit den Bahnverkehr stark eingeschränkt. Die\\xa0GDL warf der Bahn vor der Streik-Entscheidung vor, in der laufenden Tarifrunde auf Zeit zu spielen. Der Konzern habe in der jüngsten Runde am 11. Februar zuvor gemachte Zusagen zurückgenommen. Die Bahn habe die Chance, den Arbeitskampf noch abzuwenden, wenn sie ein Positionspapier der GDL doch noch unterzeichne, so Weselsky. Das bundeseigene Unternehmen hatte zuvor eine Unterschrift unter das Dokument abgelehnt. Damit erfüllte sie ein von der GDL gesetztes Ultimatum nicht. In dem Papier sind Grundpositionen der Gewerkschaft festgeschrieben. Aus Sicht der Bahn enthält es aber nicht den Sachstand, sondern Maximalforderungen der GDL. \"Es gibt keinerlei Veranlassung, der Verhandlungsstand ist eigentlich so, dass wir zu Ergebnissen kommen könnten\", sagte Bahn-Personalvorstand Ulrich Weber. \"Von daher halte ich diese angekündigten Streiks für unverhältnismäßig.\" Da sich die GDL noch nicht auf einen Termin und eine Dauer festgelegt hat, habe er die Hoffnung, den Arbeitskampf in Gesprächen mit der Gewerkschaft noch abwenden zu können. Neben verkürzten Arbeitszeiten und fünf Prozent mehr Geld verlangt die GDL auch für ihre Mitglieder außerhalb der Lokführer-Berufsgruppe eigenständige Tarifverträge. Diese waren bislang von der konkurrierenden DGB-Gewerkschaft\\xa0EVG ausgehandelt worden. Die Bahn will nach eigenem Bekunden in den parallel geführten Verhandlungen unterschiedliche Regelungen für ein und dieselbe Berufsgruppe verhindern. Die Eisenbahn- und Verkehrsgewerkschaft (EVG) will ebenfalls voneinander abweichende Tarifverträge vermeiden. Dieses Thema im Programm: v', 'source_url': 'https://www.tagesschau.de/wirtschaft/gdl-bahn-streik-105.html', 'company': '[Deutsche Bahn, GDL]'}\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import json\n",
|
||||||
|
"\n",
|
||||||
|
"# select the news article\n",
|
||||||
|
"data=NewsList[212]\n",
|
||||||
|
"jsonID=data['_id']\n",
|
||||||
|
"\n",
|
||||||
|
"#add the new attribute \n",
|
||||||
|
"data['company'] = '[Deutsche Bahn, GDL]'\n",
|
||||||
|
"\n",
|
||||||
|
"print(data)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"id": "4eef3942",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"'tagesschau_90fb6340-abc5-40bb-85c3-3cfd98aa795a'"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 9,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"jsonID"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"id": "0752a77a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"<pymongo.results.UpdateResult at 0x1f0048b26d0>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"CollNews.update_one(\n",
|
||||||
|
" {\"_id\": data[\"_id\"]},\n",
|
||||||
|
" {\"$set\": data},\n",
|
||||||
|
" upsert=True # Setze upsert=True, um das Dokument einzufügen, falls es noch nicht existiert\n",
|
||||||
|
")\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"id": "dae4966a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#get all documents from collection\n",
|
||||||
|
"cursor=CollNews.find({})\n",
|
||||||
|
"NewsList=list(cursor)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"id": "0412f2f8",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"{'_id': 'tagesschau_90fb6340-abc5-40bb-85c3-3cfd98aa795a',\n",
|
||||||
|
" 'title': 'GDL kündigt neue Streiks an',\n",
|
||||||
|
" 'date': '2023-06-28T16:46:37.324+02:00',\n",
|
||||||
|
" 'text': ' Die Deutsche Bahn soll wieder bestreikt werden. Die Lokführergewerkschaft GDL hat neue Arbeitskämpfe angekündigt, nachdem die Tarifverhandlungen mit der Bahn gescheitert waren. Ab Freitag könnten die Arbeitsniederlegungen beginnen. Die Lokführergewerkschaft GDL hat erneute Streiks bei der Deutschen Bahn angekündigt. Zum genauen Zeitpunkt und Dauer machte GDL-Chef Claus Weselsky noch keine Angaben. Er teilte lediglich mit, dass am Mittwoch und Donnerstag nicht gestreikt werde. Die GDL werde den Streik \"rechtzeitig ankündigen\". Vor der Entscheidung der GDL-Spitzengremien für die Wiederaufnahme von\\xa0Streiks hatte Weselsky von rund 100 Stunden Arbeitskampf gesprochen. Das wären mehr als vier Tage. Die GDL hatte im Herbst bereits sechs Mal bundesweit zu Arbeitsniederlegungen aufgerufen und damit den Bahnverkehr stark eingeschränkt. Die\\xa0GDL warf der Bahn vor der Streik-Entscheidung vor, in der laufenden Tarifrunde auf Zeit zu spielen. Der Konzern habe in der jüngsten Runde am 11. Februar zuvor gemachte Zusagen zurückgenommen. Die Bahn habe die Chance, den Arbeitskampf noch abzuwenden, wenn sie ein Positionspapier der GDL doch noch unterzeichne, so Weselsky. Das bundeseigene Unternehmen hatte zuvor eine Unterschrift unter das Dokument abgelehnt. Damit erfüllte sie ein von der GDL gesetztes Ultimatum nicht. In dem Papier sind Grundpositionen der Gewerkschaft festgeschrieben. Aus Sicht der Bahn enthält es aber nicht den Sachstand, sondern Maximalforderungen der GDL. \"Es gibt keinerlei Veranlassung, der Verhandlungsstand ist eigentlich so, dass wir zu Ergebnissen kommen könnten\", sagte Bahn-Personalvorstand Ulrich Weber. \"Von daher halte ich diese angekündigten Streiks für unverhältnismäßig.\" Da sich die GDL noch nicht auf einen Termin und eine Dauer festgelegt hat, habe er die Hoffnung, den Arbeitskampf in Gesprächen mit der Gewerkschaft noch abwenden zu können. Neben verkürzten Arbeitszeiten und fünf Prozent mehr Geld verlangt die GDL auch für ihre Mitglieder außerhalb der Lokführer-Berufsgruppe eigenständige Tarifverträge. Diese waren bislang von der konkurrierenden DGB-Gewerkschaft\\xa0EVG ausgehandelt worden. Die Bahn will nach eigenem Bekunden in den parallel geführten Verhandlungen unterschiedliche Regelungen für ein und dieselbe Berufsgruppe verhindern. Die Eisenbahn- und Verkehrsgewerkschaft (EVG) will ebenfalls voneinander abweichende Tarifverträge vermeiden. Dieses Thema im Programm: v',\n",
|
||||||
|
" 'source_url': 'https://www.tagesschau.de/wirtschaft/gdl-bahn-streik-105.html',\n",
|
||||||
|
" 'company': '[Deutsche Bahn, GDL]'}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"NewsList[212]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "426cdc6a",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 3
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython3",
|
||||||
|
"version": "3.8.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
5
Jupyter/mongoDB/configurationFH.py
Normal file
5
Jupyter/mongoDB/configurationFH.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
HOSTNAME="172.17.38.210"
|
||||||
|
DATABASE="transparenzregister"
|
||||||
|
PORT=30217
|
||||||
|
USERNAME="root"
|
||||||
|
PASSWORD="secret_password"
|
Reference in New Issue
Block a user