Mit Python eine Sicherung einer Datenbank erstellen.

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Lorant225
User
Beiträge: 2
Registriert: Sonntag 5. Mai 2019, 19:59

Hallo an alle Python Experten,
Ich bin Hassan und bin absoluter Python "Anfänger", ich versuche gerade ein Tool zu konzipieren um Automatisch Datenbank-Dumps durchzuführen.
Leider komme ich nicht so richtig voran und hoffe auf eure Hilfe.
Ich wüde mich mega freuen, wenn es jemanden gibt, der mit mir sein Wissen teilt. Lieben Dank vorab :)

Hier ist die Aufgabe:

(Einstiegsniveau)

- Ein Datenbankzugriff ist eingerichtet
- Ein kompletten Dump der Datenbank durchführen
- Der Dump soll nach Datenbank und Datum benannt werden, z. B.xxx_db_yyyymmdd_hhmmss
- Pro Tag sollen zwei Dumps erstellt werden (12:00 Uhr, 20:00 Uhr)
- Der Dump soll komprimiert werden
- Die Dumps werden in einem sinnvollen Verzeichnis gespeichert
- Sie haben ein Testprotokoll mit Testfällen und den erwarteten sowie tatsächlichen Programmverhalten erstellt



(Fortgeschrittenniveau)

- Die Dumps sollen für 14 Tage im Verzeichnis „Dumps“ aufbewahrt werden.
- Nach 14 Tagen werden die Dumps in ein Verzeichnis „Archiv“ kopiert
- Nach 28 Tagen wird pro Tag nur der 20:00 Uhr-Dump aufbewahrt.
- Das Programm kann zu einem beliebigen Zeitpunkt ausgeführt werden und es wird einentsprechender Dump erstellt


(Expertenniveau)

-
- Sie nutzen Logging
- Die Steuerung des Programm erfolgt sowohl über die Parameter beim Programmaufruf als auch über die interaktive Abfrage in der Konsole
- Erstellen einer grafischen Benutzeroberfläche
(Could have mit Sternchen J!)
o Anzeige der existierenden Dumps
o Löschen ausgewählter Dumps
o Erstellen eines Dumps zu einem beliebigen Zeitpunkt
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Was hast du denn schon an Code und wo sitzt du gerade fest?

Für das dumpen einer Datenbank brauchst du in der Regel deren Tools und kannst diese in der Regel mit "subprocess" aufrufen.
Lorant225
User
Beiträge: 2
Registriert: Sonntag 5. Mai 2019, 19:59

Hey,
Ich habe bisher die Datenbank erstellt und versucht die über CMD zu sichern. Das geht, aber leider nicht wie gewünscht.
In dem Arbeitsauftrag steht, dass ein Backup 2 mal täglich automatisch gemacht werden muss, das geht mit CMD aber nicht. Bei Python fehlen mir leider viele Grundlagen, weil ich Python selbstständig lerne und niemanden habe, den ich fragen kann.
Ich würde mich freuen, wenn du mir weiterhelfen könntest.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

In der Aufgabe steht nicht, dass die Aufgabe mit Python gelöst werden soll.
Python Grundlagen gibt es im offiziellen Tutorial.

Es gibt keinen magischen Befehl in Python, der eine Datenbank sichert. Dafür gibt es in der Regel ein Tool, das bei der Datenbank mitkommt. Da du uns aber noch nicht verraten hast, welches DBMS du verwendest, kann dir auch niemand sagen, wie das Tool heißen könnte.

Auch werden Python-Programme nicht magisch zu einer bestimmten Uhrzeit ausgeführt. Dafür bräuchte man sowieso etwas, das von außen das Programm startet.

Ich habe so etwas in der Vergangenheit unter Linux umgesetzt - so wie das wahrscheinlich auf vielen Servern dieser Welt funktioniert: Ein Cron-Job startet ein Batch-Script, dass die entsprechenden Befehle ausführt. Statt des Batch-Scripts kann man natürlich auch jede andere beliebige Programmiersprache nehmen.

Du musst also rausfinden:
1. Wie man die Datenbank sichert
2. Wie man zu einer festen Zeit ein Programm (offensichtlich unter Windows) ausführt
3. Mit dem Wissen aus 2 ein Programm aufrufen, dass die SIcherung wie in 1 vornimmt und das dann entsprechend der Vorgaben benennt, komprimiert, etc.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wir werden dir hier keine Lösung auf dem Tablett liefern. Dazu gibt’s hier auch einen Thread der sich an Schüler, Auszubildende oder Studenten richtet.

Wenn du konkrete Python fragen hast, werden die gerne beantwortet. Auch konzeptionelle Hilfe können wir gewähren. Aber am Ende wird es dein Code sein. Ist schließlich auch deine Note.

Für ein solches Problem (und eigentlich alle) bietet sich das zerteilen in überschaubare und gut einzeln Testbare Funktionen an. Also zb eine Funktion welche die gewünschte Benamung mittels String formatting und dem Modul datetime erstellt. Und eine die einen gegebenen dump umbenennt. Und eine die den dump geeignet komprimiert. Aus diesen Bauteilen konstruierst du dann die gewünschte Funktionalität.
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Noch ein Nachtrag: andere wichtige Module zur Lösung dieser Aufgabe sind pathlib und subprocess zur Ausführung des eigentlichen Dump- Kommandos. Python hat auch eine Reihe Kompressoren zu bieten, zb gzip oder zip.
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

Gibt es abgesehen von der Aufgabenstellung denn weitere Vorgaben, was die Programmiersprache, das RDBMs, das Betriebssystem o.Ä. betrifft? Denn, wie sparrow auch schon andeutete, sind die meisten Teilaufgaben klassische "Routine-Aufgaben" für Linux/Unix-Admins, die man mit Standardwerkzeugen (cron, logrotate, system etc.) und ein, zwei kleineren (shell, python, perl, ...) Skripten lösen kann. Die als "Expertenniveau" deklarierte GUI würde ich persönlich auch eher frei interpretieren und ein einfaches Webinterface stricken. (Worum auch immer man für sowas eine GUI brauchen sollte ...)
Antworten