From fe7684556634141418a1c1be38dbd9a073e58173 Mon Sep 17 00:00:00 2001 From: Jan Bertram Date: Sun, 8 Oct 2023 21:46:31 +0200 Subject: [PATCH] fetches plans so far, TODO: prepare for going public: translate, comment --- Datenbankentwurf_Repertoire.drawio | 1 + Satz.sql | 321 +++++++++++++++++++++++++++++ Werk.sql | 128 ++++++++++++ builddb.py | 23 +++ komponist_innen.sql | 13 ++ rep_cli.py | 169 +++++++++++++++ repertoire.db | Bin 0 -> 65536 bytes repertoire.sql | 67 ++++++ 8 files changed, 722 insertions(+) create mode 100644 Datenbankentwurf_Repertoire.drawio create mode 100644 Satz.sql create mode 100644 Werk.sql create mode 100644 builddb.py create mode 100644 komponist_innen.sql create mode 100644 rep_cli.py create mode 100644 repertoire.db create mode 100644 repertoire.sql diff --git a/Datenbankentwurf_Repertoire.drawio b/Datenbankentwurf_Repertoire.drawio new file mode 100644 index 0000000..b17f02a --- /dev/null +++ b/Datenbankentwurf_Repertoire.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/Satz.sql b/Satz.sql new file mode 100644 index 0000000..e2ca1aa --- /dev/null +++ b/Satz.sql @@ -0,0 +1,321 @@ +INSERT INTO Satz (Werk_id,Lfd_Satznummer,Bezeichnung,Tonart) +VALUES +(1,1,"Präludium","C-Dur"), +(1,2,"Fuge","C-Dur"), +(2,1,"Präludium","c-Moll"), +(2,2,"Fuge","c-Moll"), +(3,1,"Präludium","Cis-Dur"), +(3,2,"Fuge","Cis-Dur"), +(4,1,"Präludium","cis-Moll"), +(4,2,"Fuge","cis-Moll"), +(5,1,"Präludium","D-Dur"), +(5,2,"Fuge","D-Dur"), +(6,1,"Präludium","d-Moll"), +(6,2,"Fuge","d-Moll"), +(7,1,"Präludium","Es-Dur"), +(7,2,"Fuge","Es-Dur"), +(8,1,"Präludium","es-Moll"), +(8,2,"Fuge","dis-Moll"), +(9,1,"Präludium","E-Dur"), +(9,2,"Fuge","E-Dur"), +(10,1,"Präludium","e-Moll"), +(10,2,"Fuge","e-Moll"), +(11,1,"Präludium","F-Dur"), +(11,2,"Fuge","F-Dur"), +(12,1,"Präludium","f-Moll"), +(12,2,"Fuge","f-Moll"), +(13,1,"Präludium","Fis-Dur"), +(13,2,"Fuge","Fis-Dur"), +(14,1,"Präludium","fis-Moll"), +(14,2,"Fuge","fis-Moll"), +(15,1,"Präludium","G-Dur"), +(15,2,"Fuge","G-Dur"), +(16,1,"Präludium","g-Moll"), +(16,2,"Fuge","g-Moll"), +(17,1,"Präludium","As-Dur"), +(17,2,"Fuge","As-Dur"), +(18,1,"Präludium","gis-Moll"), +(18,2,"Fuge","gis-Moll"), +(19,1,"Präludium","A-Dur"), +(19,2,"Fuge","A-Dur"), +(20,1,"Präludium","a-Moll"), +(20,2,"Fuge","a-Moll"), +(21,1,"Präludium","B-Dur"), +(21,2,"Fuge","B-Dur"), +(22,1,"Präludium","b-Moll"), +(22,2,"Fuge","b-Moll"), +(23,1,"Präludium","H-Dur"), +(23,2,"Fuge","H-Dur"), +(24,1,"Präludium","h-Moll"), +(24,2,"Fuge","h-Moll"), +(25,1,"Präludium","C-Dur"), +(25,2,"Fuge","C-Dur"), +(26,1,"Präludium","c-Moll"), +(26,2,"Fuge","c-Moll"), +(27,1,"Präludium","Cis-Dur"), +(27,2,"Fuge","Cis-Dur"), +(28,1,"Präludium","cis-Moll"), +(28,2,"Fuge","cis-Moll"), +(29,1,"Präludium","D-Dur"), +(29,2,"Fuge","D-Dur"), +(30,1,"Präludium","d-Moll"), +(30,2,"Fuge","d-Moll"), +(31,1,"Präludium","Es-Dur"), +(31,2,"Fuge","Es-Dur"), +(32,1,"Präludium","dis-Moll"), +(32,2,"Fuge","dis-Moll"), +(33,1,"Präludium","E-Dur"), +(33,2,"Fuge","E-Dur"), +(34,1,"Präludium","e-Moll"), +(34,2,"Fuge","e-Moll"), +(35,1,"Präludium","F-Dur"), +(35,2,"Fuge","F-Dur"), +(36,1,"Präludium","f-Moll"), +(36,2,"Fuge","f-Moll"), +(37,1,"Präludium","Fis-Dur"), +(37,2,"Fuge","Fis-Dur"), +(38,1,"Präludium","fis-Moll"), +(38,2,"Fuge","fis-Moll"), +(39,1,"Präludium","G-Dur"), +(39,2,"Fuge","G-Dur"), +(40,1,"Präludium","g-Moll"), +(40,2,"Fuge","g-Moll"), +(41,1,"Präludium","As-Dur"), +(41,2,"Fuge","As-Dur"), +(42,1,"Präludium","gis-Moll"), +(42,2,"Fuge","gis-Moll"), +(43,1,"Präludium","A-Dur"), +(43,2,"Fuge","A-Dur"), +(44,1,"Präludium","a-Moll"), +(44,2,"Fuge","a-Moll"), +(45,1,"Präludium","B-Dur"), +(45,2,"Fuge","B-Dur"), +(46,1,"Präludium","b-Moll"), +(46,2,"Fuge","b-Moll"), +(47,1,"Präludium","H-Dur"), +(47,2,"Fuge","H-Dur"), +(48,1,"Präludium","h-Moll"), +(48,2,"Fuge","h-Moll") +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) +VALUES +(49, 1, 1, 'Allegro', 'f-Moll'), +(49, 2, 1, 'Adagio', 'F-Dur'), +(49, 3, 1, 'Menuetto – Allegretto', 'f-Moll'), +(49, 4, 1, 'Prestissimo', 'f-Moll'), +(50, 1, 2, 'Allegro vivace', 'A-Dur'), +(50, 2, 2, 'Largo', 'D-Dur'), +(50, 3, 2, 'Scherzo – Allegretto', 'A-Dur'), +(50, 4, 2, 'Rondo – Grazioso', 'A-Dur'), +(51, 1, 3, 'Allegro con brio', 'C-Dur'), +(51, 2, 3, 'Adagio', 'E-Dur'), +(51, 3, 3, 'Scherzo – Allegro', 'C-Dur'), +(51, 4, 3, 'Allegro assai', 'C-Dur'), +(52, 1, NULL, 'Allegro molto e con brio', 'Es-Dur'), +(52, 2, NULL, 'Largo', 'C-Dur'), +(52, 3, NULL, 'Allegro', 'Es-Dur'), +(52, 4, NULL, 'Rondo – Poco Allegretto e grazioso', 'Es-Dur'), +(53, 1, 1, 'Allegro molto e con brio', 'c-Moll'), +(53, 2, 1, 'Adagio molto', 'As-Dur'), +(53, 3, 1, 'Finale – Prestissimo', 'c-Moll'), +(54, 1, 2, 'Allegro', 'F-Dur'), +(54, 2, 2, 'Allegretto', 'f-Moll'), +(54, 3, 2, 'Presto', 'F-Dur'), +(55, 1, 3, 'Presto', 'D-Dur'), +(55, 2, 3, 'Largo e mesto', 'd-Moll'), +(55, 3, 3, 'Menuetto – Allegro', 'D-Dur'), +(55, 4, 3, 'Rondo – Allegro', 'D-Dur'), +(56, 1, NULL, 'Grave – Allegro di molto e con brio', 'c-Moll'), +(56, 2, NULL, 'Adagio', 'As-Dur'), +(56, 3, NULL, 'Rondo – Allegro', 'c-Moll'), +(57, 1, 1, 'Allegro', 'E-Dur'), +(57, 2, 1, 'Allegretto', 'e-Moll'), +(57, 3, 1, 'Rondo – Allegro commodo', 'E-Dur'), +(58, 1, 2, 'Allegro', 'G-Dur'), +(58, 2, 2, 'Andante', 'C-Dur'), +(58, 3, 2, 'Scherzo – Allegro assai', 'G-Dur'), +(59, 1, NULL, 'Allegro con brio', 'B-Dur'), +(59, 2, NULL, 'Adagio', 'Es-Dur'), +(59, 3, NULL, 'Menuetto', 'B-Dur'), +(59, 4, NULL, 'Rondo – Allegretto', 'B-Dur'), +(60, 1, NULL, 'Andante con Variazioni', 'As-Dur'), +(60, 2, NULL, 'Scherzo – Allegro molto', 'As-Dur'), +(60, 3, NULL, 'Marcia funebre sulla morta d’un Eroe', 'as-Moll'), +(60, 4, NULL, 'Allegro', 'As-Dur'), +(61, 1, 1, 'Andante', 'Es-Dur'), +(61, 2, 1, 'Allegro molto e vivace', 'c-Moll'), +(61, 3, 1, 'Adagio', 'As-Dur'), +(61, 4, 1, 'Allegro vivace', 'Es-Dur'), +(62, 1, 2, 'Adagio sostenuto', 'cis-Moll'), +(62, 2, 2, 'Allegretto', 'Des-Dur'), +(62, 3, 2, 'Presto', 'cis-Moll'), +(63, 1, NULL, 'Allegro', 'D-Dur'), +(63, 2, NULL, 'Andante', 'd-Moll'), +(63, 3, NULL, 'Scherzo – Allegro vivace', 'D-Dur'), +(63, 4, NULL, 'Rondo – Allegro ma non troppo', 'D-Dur') +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) +VALUES +(64, 1, 1, 'Allegro vivace', 'G-Dur'), +(64, 2, 1, 'Adagio grazioso', 'C-Dur'), +(64, 3, 1, 'Rondo – Allegretto', 'G-Dur'), +(65, 1, 2, 'Largo – Allegro', 'd-Moll'), +(65, 2, 2, 'Adagio', 'B-Dur'), +(65, 3, 2, 'Allegretto', 'd-Moll'), +(66, 1, 3, 'Allegro', 'Es-Dur'), +(66, 2, 3, 'Scherzo – Allegretto vivace', 'As-Dur'), +(66, 3, 3, 'Menuetto – Moderato e grazioso', 'Es-Dur'), +(66, 4, 3, 'Presto con fuoco', 'Es-Dur'), +(67, 1, 1, 'Andante', 'g-Moll'), +(67, 2, 1, 'Rondo – Allegro', 'G-Dur'), +(68, 1, 2, 'Allegro, ma non troppo', 'G-Dur'), +(68, 2, 2, 'Tempo di Menuetto', 'G-Dur'), +(69, 1, NULL, 'Allegro con brio', 'C-Dur'), +(69, 2, NULL, 'Introduzione – Adagio molto', 'F-Dur'), +(69, 3, NULL, 'Rondo – Allegretto moderato', 'C-Dur'), +(70, 1, NULL, 'In Tempo d’un Menuetto', 'F-Dur'), +(70, 2, NULL, 'Allegretto', 'F-Dur'), +(71, 1, NULL, 'Allegro assai', 'f-Moll'), +(71, 2, NULL, 'Andante con moto', 'Des-Dur'), +(71, 3, NULL, 'Allegro, ma non troppo', 'f-Moll'), +(72, 1, NULL, 'Adagio cantabile – Allegro ma non troppo', 'Fis-Dur'), +(72, 2, NULL, 'Allegro vivace', 'Fis-Dur'), +(73, 1, NULL, 'Presto alla tedesca', 'G-Dur'), +(73, 2, NULL, 'Andante', 'g-Moll'), +(73, 3, NULL, 'Vivace', 'G-Dur'), +(74, 1, NULL, 'Das Lebewohl (Les Adieux) – Adagio – Allegro', 'Es-Dur'), +(74, 2, NULL, 'Die Abwesenheit (L’Absence) – Andante espressivo', 'c-Moll'), +(74, 3, NULL, 'Das Wiedersehen (Le Retour) – Vivacissimamente', 'Es-Dur'), +(75, 1, NULL, 'Mit Lebhaftigkeit und durchaus mit Empfindung und Ausdruck', 'e-Moll'), +(75, 2, NULL, 'Nicht zu geschwind und sehr singbar vorgetragen', 'E-Dur'), +(76, 1, NULL, 'Etwas lebhaft und mit der innigsten Empfindung', 'A-Dur'), +(76, 2, NULL, 'Lebhaft. Marschmäßig', 'F-Dur'), +(76, 3, NULL, 'Langsam und sehnsuchtsvoll', 'A-Dur'), +(77, 1, NULL, 'Allegro', 'B-Dur'), +(77, 2, NULL, 'Scherzo – Assai vivace', 'B-Dur'), +(77, 3, NULL, 'Adagio sostenuto', 'fis-Moll'), +(77, 4, NULL, 'Introduzione – Largo – Allegro risoluto', 'B-Dur'), +(78, 1, NULL, 'Vivace, ma non troppo', 'E-Dur'), +(78, 2, NULL, 'Prestissimo', 'e-Moll'), +(78, 3, NULL, 'Gesang mit innigster Empfindung', 'E-Dur'), +(79, 1, NULL, 'Moderato cantabile, molto espressivo', 'As-Dur'), +(79, 2, NULL, 'Allegro molto', 'f-Moll'), +(79, 3, NULL, 'Adagio, ma non troppo', 'As-Dur'), +(80, 1, NULL, 'Maestoso – Allegro con brio ed appassionato', 'c-Moll'), +(80, 2, NULL, 'Arietta – Adagio molto, semplice e cantabile', 'C-Dur') +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) VALUES +(81, 1, NULL, 'Introduzione – Moderato', 'D-Dur'), +(81, 2, 1, NULL, 'D-Dur'), +(81, 3, 2, 'Prestissimo', 'Es-Dur'), +(81, 4, 3, NULL, 'fis-Moll'), +(81, 5, 4, 'Presto', 'fis-Moll'), +(81, 6, 5, NULL, 'B-Dur'), +(81, 7, 6, NULL, 'd-Moll'), +(81, 8, 7, 'Semplice', 'As-Dur'), +(81, 9, 8, NULL, 'Des-Dur'), +(81, 10, 9, 'Prestissimo', 'b-Moll'), +(81, 11, 10, 'Vivo', 'C-Dur'), +(81, 12, 11, NULL, 'D-Dur'), +(81, 13, 12, 'Finale', 'D-Dur') +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) VALUES +(82, 1, 1, 'Allegro molto moderato', 'c-Moll'), +(82, 2, 2, 'Allegro', 'Es-Dur'), +(82, 3, 3, 'Andante', 'Ges-Dur'), +(82, 4, 4, 'Allegretto', 'As-Dur'), +(83, 1, 1, 'Allegro moderato', 'f-Moll'), +(83, 2, 2, 'Allegretto', 'As-Dur'), +(83, 3, 3, 'Thema – Andante', 'B-Dur'), +(83, 4, 4, 'Allegro scherzando', 'f-Moll') +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) VALUES +(84, 1, 1, 'Moderato', 'C-Dur'), +(84, 2, 2, 'Andantino', 'As-Dur'), +(84, 3, 3, 'Allegretto moderato', 'f-Moll'), +(84, 4, 4, 'Moderato', 'cis-Moll'), +(84, 5, 5, 'Allegro vivace', 'f-Moll'), +(84, 6, 6, 'Allegretto', 'As-Dur'), +(85, 1, NULL, 'Vivo', 'Es-Dur'), +(86, 1, 1, 'Vivace', 'As-Dur'), +(86, 2, 2, 'Lento', 'a-Moll'), +(86, 3, 3, 'Vivace', 'F-Dur'), +(87, 1, NULL, NULL, 'As-Dur'), +(88, 1, 1, 'Molto vivace', 'Des-Dur'), +(88, 2, 2, 'Tempo giusto', 'cis-Moll'), +(88, 3, 3, 'Moderato', 'As-Dur'), +(89, 1, 1, 'Tempo di Valse', 'As-Dur'), +(89, 2, 2, 'Moderato', 'h-Moll'), +(90, 1, 1, 'Molto vivace', 'Ges-Dur'), +(90, 2, 2, 'Tempo giusto', 'f-Moll'), +(90, 3, 3, 'Moderato', 'Des-Dur'), +(91, 1, NULL, NULL, 'As-Dur'), +(92, 1, NULL, 'Tempo di Valse', 'E-Dur'), +(93, 1, NULL, NULL, 'e-Moll'), +(94, 1, NULL, 'Allegretto', 'a-Moll'), +(95, 1, NULL, 'Sostenuto', 'Es-Dur'), +(96, 1, NULL, NULL, 'Es-Dur') +; + +INSERT INTO Satz (Werk_id, Lfd_Satznummer, Nummer, Bezeichnung, Tonart) VALUES +(97, 1, 1, 'Andante con moto', 'E-Dur'), +(97, 2, 2, 'Andante espressivo', 'a-Moll'), +(97, 3, 3, 'Molto Allegro e vivace', 'A-Dur'), +(97, 4, 4, 'Moderato', 'A-Dur'), +(97, 5, 5, 'Piano agitato', 'fis-Moll'), +(97, 6, 6, 'Venetianisches Gondellied – Andante sostenuto', 'g-Moll'), +(98, 1, 1, 'Andante espressivo', 'Es-Dur'), +(98, 2, 2, 'Allegro di molto', 'b-Moll'), +(98, 3, 3, 'Adagio non troppo', 'E-Dur'), +(98, 4, 4, 'Agitato e con fuoco', 'h-Moll'), +(98, 5, 5, 'Andante grazioso', 'D-Dur'), +(98, 6, 6, 'Venetianisches Gondellied – Allegretto tranquillo', 'fis-Moll'), +(99, 1, 1, 'Con moto', 'Es-Dur'), +(99, 2, 2, 'Allegro non troppo', 'c-Moll'), +(99, 3, 3, 'Presto e molto vivace', 'E-Dur'), +(99, 4, 4, 'Andante', 'A-Dur'), +(99, 5, 5, 'Agitato', 'a-Moll'), +(99, 6, 6, 'Duett – Andante con moto', 'As-Dur'), +(100, 1, 1, 'Andante con moto', 'As-Dur'), +(100, 2, 2, 'Allegro non troppo', 'Es-Dur'), +(100, 3, 3, 'Presto agitato', 'g-Moll'), +(100, 4, 4, 'Adagio', 'F-Dur'), +(100, 5, 5, 'Volkslied – Allegro con fuoco', 'a-Moll'), +(100, 6, 6, 'Molto Allegro vivace', 'A-Dur'), +(101, 1, 1, 'Andante espressivo', 'G-Dur'), +(101, 2, 2, 'Allegro con fuoco', 'B-Dur'), +(101, 3, 3, 'Andante maestoso', 'e-Moll'), +(101, 4, 4, 'Allegro con anima', 'G-Dur'), +(101, 5, 5, 'Venetianisches Gondellied – Andante con moto', 'a-Moll'), +(101, 6, 6, 'Allegretto grazioso', 'A-Dur'), +(102, 1, 1, 'Andante', 'Es-Dur'), +(102, 2, 2, 'Allegro leggiero', 'fis-Moll'), +(102, 3, 3, 'Andante tranquillo', 'B-Dur'), +(102, 4, 4, 'Presto', 'C-Dur'), +(102, 5, 5, 'Moderato', 'h-Moll'), +(102, 6, 6, 'Allegretto non troppo', 'E-Dur'), +(103, 1, 1, 'Andante espressivo', 'F-Dur'), +(103, 2, 2, 'Allegro agitato', 'a-Moll'), +(103, 3, 3, 'Presto', 'Es-Dur'), +(103, 4, 4, 'Andante sostenuto', 'D-Dur'), +(103, 5, 5, 'Allegretto', 'A-Dur'), +(103, 6, 6, 'Allegretto con moto', 'B-Dur'), +(104, 1, 1, 'Andante', 'e-Moll'), +(104, 2, 2, 'Adagio', 'D-Dur'), +(104, 3, 3, 'Kinderstück – Presto', 'C-Dur'), +(104, 4, 4, 'Andante', 'g-Moll'), +(104, 5, 5, 'Kinderstück – Allegro vivace', 'A-Dur'), +(104, 6, 6, 'Andante', 'C-Dur'), +(105, 1, NULL, 'Espressivo & Allegro', 'Es-Dur'), +(106, 1, NULL, 'Lied – Andante', 'A-Dur'), +(107, 1, NULL, 'Allegretto', 'A-Dur'), +(108, 1, NULL, 'Lied – Allegro molto', 'fis-Moll'), +(109, 1, NULL, 'Gondellied – Allegretto non troppo', 'A-Dur'), +(110, 1, NULL, 'Ein Lied ohne Worte', 'F-Dur'), +(111, 1, NULL, 'Reiter-Lied – Allegro vivace', 'd-Moll') +; diff --git a/Werk.sql b/Werk.sql new file mode 100644 index 0000000..2d76032 --- /dev/null +++ b/Werk.sql @@ -0,0 +1,128 @@ +INSERT INTO Werk (id,Komp_id,VOE_Jahr,Sammlung,Haupttonart,Titel,Werkverzeichnis,Werkverzeichnisnummer) +VALUES +(1,1,1722,'Das wohltemperierte Klavier Teil 1','C-Dur','Präludium und Fuge','BWV','846'), +(2,1,1722,'Das wohltemperierte Klavier Teil 1','c-Moll','Präludium und Fuge','BWV','847'), +(3,1,1722,'Das wohltemperierte Klavier Teil 1','Cis-Dur','Präludium und Fuge','BWV','848'), +(4,1,1722,'Das wohltemperierte Klavier Teil 1','cis-Moll','Präludium und Fuge','BWV','849'), +(5,1,1722,'Das wohltemperierte Klavier Teil 1','D-Dur','Präludium und Fuge','BWV','850'), +(6,1,1722,'Das wohltemperierte Klavier Teil 1','d-Moll','Präludium und Fuge','BWV','851'), +(7,1,1722,'Das wohltemperierte Klavier Teil 1','Es-Dur','Präludium und Fuge','BWV','852'), +(8,1,1722,'Das wohltemperierte Klavier Teil 1','es-/dis-Moll','Präludium und Fuge','BWV','853'), +(9,1,1722,'Das wohltemperierte Klavier Teil 1','E-Dur','Präludium und Fuge','BWV','854'), +(10,1,1722,'Das wohltemperierte Klavier Teil 1','e-Moll','Präludium und Fuge','BWV','855'), +(11,1,1722,'Das wohltemperierte Klavier Teil 1','F-Dur','Präludium und Fuge','BWV','856'), +(12,1,1722,'Das wohltemperierte Klavier Teil 1','f-Moll','Präludium und Fuge','BWV','857'), +(13,1,1722,'Das wohltemperierte Klavier Teil 1','Fis-Dur','Präludium und Fuge','BWV','858'), +(14,1,1722,'Das wohltemperierte Klavier Teil 1','fis-Moll','Präludium und Fuge','BWV','859'), +(15,1,1722,'Das wohltemperierte Klavier Teil 1','G-Dur','Präludium und Fuge','BWV','860'), +(16,1,1722,'Das wohltemperierte Klavier Teil 1','g-Moll','Präludium und Fuge','BWV','861'), +(17,1,1722,'Das wohltemperierte Klavier Teil 1','As-Dur','Präludium und Fuge','BWV','862'), +(18,1,1722,'Das wohltemperierte Klavier Teil 1','gis-Moll','Präludium und Fuge','BWV','863'), +(19,1,1722,'Das wohltemperierte Klavier Teil 1','A-Dur','Präludium und Fuge','BWV','864'), +(20,1,1722,'Das wohltemperierte Klavier Teil 1','a-Moll','Präludium und Fuge','BWV','865'), +(21,1,1722,'Das wohltemperierte Klavier Teil 1','B-Dur','Präludium und Fuge','BWV','866'), +(22,1,1722,'Das wohltemperierte Klavier Teil 1','b-Moll','Präludium und Fuge','BWV','867'), +(23,1,1722,'Das wohltemperierte Klavier Teil 1','H-Dur','Präludium und Fuge','BWV','868'), +(24,1,1722,'Das wohltemperierte Klavier Teil 1','h-Moll','Präludium und Fuge','BWV','869'), +(25,1,1742,'Das wohltemperierte Klavier Teil 2','C-Dur','Präludium und Fuge','BWV','870'), +(26,1,1742,'Das wohltemperierte Klavier Teil 2','c-Moll','Präludium und Fuge','BWV','871'), +(27,1,1742,'Das wohltemperierte Klavier Teil 2','Cis-Dur','Präludium und Fuge','BWV','872'), +(28,1,1742,'Das wohltemperierte Klavier Teil 2','cis-Moll','Präludium und Fuge','BWV','873'), +(29,1,1742,'Das wohltemperierte Klavier Teil 2','D-Dur','Präludium und Fuge','BWV','874'), +(30,1,1742,'Das wohltemperierte Klavier Teil 2','d-Moll','Präludium und Fuge','BWV','875'), +(31,1,1742,'Das wohltemperierte Klavier Teil 2','Es-Dur','Präludium und Fuge','BWV','876'), +(32,1,1742,'Das wohltemperierte Klavier Teil 2','dis-Moll','Präludium und Fuge','BWV','877'), +(33,1,1742,'Das wohltemperierte Klavier Teil 2','E-Dur','Präludium und Fuge','BWV','878'), +(34,1,1742,'Das wohltemperierte Klavier Teil 2','e-Moll','Präludium und Fuge','BWV','879'), +(35,1,1742,'Das wohltemperierte Klavier Teil 2','F-Dur','Präludium und Fuge','BWV','880'), +(36,1,1742,'Das wohltemperierte Klavier Teil 2','f-Moll','Präludium und Fuge','BWV','881'), +(37,1,1742,'Das wohltemperierte Klavier Teil 2','Fis-Dur','Präludium und Fuge','BWV','882'), +(38,1,1742,'Das wohltemperierte Klavier Teil 2','fis-Moll','Präludium und Fuge','BWV','883'), +(39,1,1742,'Das wohltemperierte Klavier Teil 2','G-Dur','Präludium und Fuge','BWV','884'), +(40,1,1742,'Das wohltemperierte Klavier Teil 2','g-Moll','Präludium und Fuge','BWV','885'), +(41,1,1742,'Das wohltemperierte Klavier Teil 2','As-Dur','Präludium und Fuge','BWV','886'), +(42,1,1742,'Das wohltemperierte Klavier Teil 2','gis-Moll','Präludium und Fuge','BWV','887'), +(43,1,1742,'Das wohltemperierte Klavier Teil 2','A-Dur','Präludium und Fuge','BWV','888'), +(44,1,1742,'Das wohltemperierte Klavier Teil 2','a-Moll','Präludium und Fuge','BWV','889'), +(45,1,1742,'Das wohltemperierte Klavier Teil 2','B-Dur','Präludium und Fuge','BWV','890'), +(46,1,1742,'Das wohltemperierte Klavier Teil 2','b-Moll','Präludium und Fuge','BWV','891'), +(47,1,1742,'Das wohltemperierte Klavier Teil 2','H-Dur','Präludium und Fuge','BWV','892'), +(48,1,1742,'Das wohltemperierte Klavier Teil 2','h-Moll','Präludium und Fuge','BWV','893') +; + +INSERT INTO Werk (id, Komp_id, VOE_Jahr, Opus, Sammlung, Haupttonart, Titel, Aliasname, Werkverzeichnis, Werkverzeichnisnummer) VALUES +(49, 2, 1795, '2', 'Sonaten', 'f-Moll', 'Sonate', NULL, NULL, NULL), +(50, 2, 1795, '2', 'Sonaten', 'A-Dur', 'Sonate', NULL, NULL, NULL), +(51, 2, 1795, '2', 'Sonaten', 'C-Dur', 'Sonate', NULL, NULL, NULL), +(52, 2, 1796, '7', 'Sonaten', 'Es-Dur', 'Sonate', NULL, NULL, NULL), +(53, 2, 1798, '10', 'Sonaten', 'c-Moll', 'Sonate', NULL, NULL, NULL), +(54, 2, 1798, '10', 'Sonaten', 'F-Dur', 'Sonate', NULL, NULL, NULL), +(55, 2, 1798, '10', 'Sonaten', 'D-Dur', 'Sonate', NULL, NULL, NULL), +(56, 2, 1799, '13', 'Sonaten', 'c-Moll', 'Sonate', 'Pathétique', NULL, NULL), +(57, 2, 1799, '14', 'Sonaten', 'E-Dur', 'Sonate', NULL, NULL, NULL), +(58, 2, 1799, '14', 'Sonaten', 'G-Dur', 'Sonate', NULL, NULL, NULL), +(59, 2, 1800, '22', 'Sonaten', 'B-Dur', 'Sonate', NULL, NULL, NULL), +(60, 2, 1801, '26', 'Sonaten', 'As-Dur', 'Sonate', NULL, NULL, NULL), +(61, 2, 1801, '27', 'Sonaten', 'Es-Dur', 'Sonate', NULL, NULL, NULL), +(62, 2, 1801, '27', 'Sonaten', 'cis-Moll', 'Sonate', 'Mondschein', NULL, NULL), +(63, 2, 1801, '28', 'Sonaten', 'D-Dur', 'Sonate', 'Pastorale', NULL, NULL), +(64, 2, 1802, '31', 'Sonaten', 'G-Dur', 'Sonate', NULL, NULL, NULL), +(65, 2, 1802, '31', 'Sonaten', 'd-Moll', 'Sonate', 'Der Sturm', NULL, NULL), +(66, 2, 1802, '31', 'Sonaten', 'Es-Dur', 'Sonate', NULL, NULL, NULL), +(67, 2, 1795, '49', 'Sonaten', 'g-Moll', 'Sonate', NULL, NULL, NULL), +(68, 2, 1795, '49', 'Sonaten', 'G-Dur', 'Sonate', NULL, NULL, NULL), +(69, 2, 1803, '53', 'Sonaten', 'C-Dur', 'Sonate', 'Waldstein', NULL, NULL), +(70, 2, 1804, '54', 'Sonaten', 'F-Dur', 'Sonate', NULL, NULL, NULL), +(71, 2, 1804, '57', 'Sonaten', 'f-Moll', 'Sonate', 'Appassionata', NULL, NULL), +(72, 2, 1809, '78', 'Sonaten', 'Fis-Dur', 'Sonate', NULL, NULL, NULL), +(73, 2, 1809, '79', 'Sonaten', 'G-Dur', 'Sonate', NULL, NULL, NULL), +(74, 2, 1809, '81a', 'Sonaten', 'Es-Dur', 'Sonate', 'Les Adieux', NULL, NULL), +(75, 2, 1814, '90', 'Sonaten', 'e-Moll', 'Sonate', NULL, NULL, NULL), +(76, 2, 1816, '101', 'Sonaten', 'A-Dur', 'Sonate', NULL, NULL, NULL), +(77, 2, 1818, '106', 'Sonaten', 'B-Dur', 'Sonate', 'Große Sonate für das Hammerklavier', NULL, NULL), +(78, 2, 1821, '109', 'Sonaten', 'E-Dur', 'Sonate', NULL, NULL, NULL), +(79, 2, 1822, '110', 'Sonaten', 'As-Dur', 'Sonate', NULL, NULL, NULL), +(80, 2, 1822, '111', 'Sonaten', 'c-Moll', 'Sonate', NULL, NULL, NULL) +; + +INSERT INTO Werk (id, Komp_id, VOE_Jahr, Opus, Sammlung, Haupttonart, Titel, Werkverzeichnis, Werkverzeichnisnummer) VALUES +(81, 5, 1832, '2', NULL, NULL, 'Papillons', NULL, NULL); + +INSERT INTO Werk (id, Komp_id, VOE_Jahr, Opus, Sammlung, Haupttonart, Titel, Satztitel, Werkverzeichnis, Werkverzeichnisnummer) VALUES +(82, 4, 1827, '90', 'Impromptus', NULL, 'Vier Impromptus', 'Impromptu', 'D', '899'), +(83, 4, 1827, 'post. 142', 'Impromptus', NULL, 'Vier Impromptus', 'Impromptu', 'D', '935') +; + +INSERT INTO Werk (id, Komp_id, VOE_Jahr, Opus, Sammlung, Haupttonart, Titel, Satztitel, Werkverzeichnis, Werkverzeichnisnummer) VALUES +(84, 4, 1828, '94', 'Moments musicaux', NULL, 'Six moments musicaux', 'Moment musical', 'D', '780'), +(85, 3, 1834, '18', 'Walzer', 'Es-Dur', 'Grande Valse Brillante', NULL, NULL, NULL), +(86, 3, 1838, '34', 'Walzer', NULL, NULL, 'Walzer', NULL, NULL), +(87, 3, 1840, '42', 'Walzer', 'As-Dur', 'Grande Valse', NULL, NULL, NULL), +(88, 3, 1847, '64', 'Walzer', NULL, NULL, 'Walzer', NULL, NULL), +(89, 3, 1855, 'post. 69', 'Walzer', NULL, NULL, 'Walzer', NULL, NULL), +(90, 3, 1855, 'post. 70', 'Walzer', NULL, NULL, 'Walzer', NULL, NULL), +(91, 3, 1827, NULL, 'Walzer', 'As-Dur', 'Walzer', NULL, 'KK', 'IVa Nr. 13'), +(92, 3, 1829, NULL, 'Walzer', 'E-Dur', 'Walzer', NULL, 'KK', 'IVa Nr. 12'), +(93, 3, 1830, NULL, 'Walzer', 'e-Moll', 'Walzer', NULL, 'KK', 'IVa Nr. 15'), +(94, 3, 1843, NULL, 'Walzer', 'a-Moll', 'Walzer', NULL, 'KK', 'IVb Nr. 11'), +(95, 3, 1840, NULL, 'Walzer', 'Es-Dur', 'Walzer', NULL, 'KK', 'IVb Nr. 10'), +(96, 3, 1830, NULL, 'Walzer', 'Es-Dur', 'Walzer', NULL, 'KK', 'IVa Nr. 14') +; + +INSERT INTO Werk (id, Komp_id, VOE_Jahr, Opus, Sammlung, Haupttonart, Titel, Satztitel, Werkverzeichnis, Werkverzeichnisnummer) VALUES +(97, 6, 1830, '19b', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 5'), +(98, 6, 1834, '30', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 9'), +(99, 6, 1837, '38', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 16'), +(100, 6, 1841, '53', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 23'), +(101, 6, 1844, '62', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 29'), +(102, 6, 1845, '67', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 32'), +(103, 6, 1845, '85', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 46'), +(104, 6, 1845, '102', 'Lieder ohne Worte', NULL, 'Sechs Lieder ohne Worte', 'Lied ohne Worte', 'MWV', 'SD 54'), +(105, 6, NULL, NULL, 'Lieder ohne Worte', 'Es-Dur', 'Lied ohne Worte', NULL, NULL, NULL), +(106, 6, NULL, NULL, 'Lieder ohne Worte', 'A-Dur', 'Lied ohne Worte', NULL, NULL, NULL), +(107, 6, NULL, NULL, 'Lieder ohne Worte', 'A-Dur', 'Lied ohne Worte', NULL, NULL, NULL), +(108, 6, NULL, NULL, 'Lieder ohne Worte', 'fis-Moll', 'Lied ohne Worte', NULL, NULL, NULL), +(109, 6, NULL, NULL, 'Lieder ohne Worte', 'A-Dur', 'Lied ohne Worte', NULL, NULL, NULL), +(110, 6, NULL, NULL, 'Lieder ohne Worte', 'F-Dur', 'Lied ohne Worte', NULL, NULL, NULL), +(111, 6, NULL, NULL, 'Lieder ohne Worte', 'd-Moll', 'Lied ohne Worte', NULL, NULL, NULL) +; diff --git a/builddb.py b/builddb.py new file mode 100644 index 0000000..38343cc --- /dev/null +++ b/builddb.py @@ -0,0 +1,23 @@ +import sqlite3 + +con = sqlite3.connect('repertoire.db') +cursor = con.cursor() + +def execute_sql_from_file(filename, cursor): + with open(filename) as sqlfile: + sqlcommands = sqlfile.read() + list_of_commands = sqlcommands.split(';') + for command in list_of_commands: + cursor.execute(command) + + +execute_sql_from_file('repertoire.sql', cursor) +execute_sql_from_file('komponist_innen.sql', cursor) +execute_sql_from_file('Werk.sql', cursor) +execute_sql_from_file('Satz.sql', cursor) + +con.commit() + +# cursor.execute('COMMIT') + +con.close() diff --git a/komponist_innen.sql b/komponist_innen.sql new file mode 100644 index 0000000..3ed8ce0 --- /dev/null +++ b/komponist_innen.sql @@ -0,0 +1,13 @@ +INSERT INTO Komponist_in (id, Vorname, Name, Geburtsdatum, Sterbedatum) +VALUES + (1, "Johann Sebastian", "Bach", 16850331, 17500728), + (2, "Ludwig van", "Beethoven", 17701217, 18270326), + (3, "Frédéric", "Chopin", 18100301, 18491017), + (4, "Franz", "Schubert", 17970131, 18281119), + (5, "Robert", "Schumann", 18100608, 18560729) +; + +INSERT INTO Komponist_in (id, Vorname, Name, Geburtsdatum, Sterbedatum) +VALUES + (6, 'Felix', 'Mendelssohn Bartholdy', 18090203, 18471104) +; diff --git a/rep_cli.py b/rep_cli.py new file mode 100644 index 0000000..a441f9a --- /dev/null +++ b/rep_cli.py @@ -0,0 +1,169 @@ +import sqlite3 + +class Session: + + def __init__(self, db_agent): + self.user = -1 + self.db_agent = db_agent + self.resultstring = 'no results yet' + + def set_user(self, db_index): + self.user = db_index + return 'User set' + + def get_active_user(self): + sql_command = f''' + SELECT Vorname, Nachname + FROM Spieler_in + WHERE id = {self.user} + ''' + active_user = '' + try: + first_name, name = self.db_agent.execute(sql_command).fetchone() + active_user = f'{first_name} {name}' + except: + active_user = 'No active user' + return active_user + + def invoke_command(self, command, arguments): + self.resultstring = '' + if command == 'a': + self.resultstring += self.set_user(arguments[0]) + elif command == 'n': + self.create_new_user(arguments[0], arguments[1]) + self.resultstring += f'Created new user {arguments[0]} {arguments[1]}.' + elif command == 's': + self.resultstring += self.show_works() + elif command == 'su': + self.resultstring += self.show_users() + elif command == 'q': + self.resultstring += 'Bye-bye' + else: + self.resultstring += 'Could not understand command.' + + def result(self): + return self.resultstring + + def create_new_user(self, first_name, name): + sql_command = f''' + INSERT INTO Spieler_in (Vorname, Nachname) + VALUES ("{first_name}", "{name}"); + ''' + self.db_agent.execute(sql_command) + + def show_users(self): + sql_command = ''' + SELECT * FROM Spieler_in; + ''' + result_list = self.db_agent.execute(sql_command).fetchall() + fun_resultstring = '' + for item in result_list: + fun_resultstring += f'{item[0]}: {item[1]} {item[2]}\n' + return fun_resultstring + + def show_works(self): + sql_command = ''' + SELECT id + FROM Werk + ''' + list_of_work_ids = self.db_agent.execute(sql_command).fetchall() + # GET WORKS OUT! + return '' + + +# End session + +class Werk_unter_id: + # con = sqlite3.connect('repertoire.db') + # reader = con.cursor() + + def __init__(self, werk_id, db_agent): + self.values = dict() + self.reader = db_agent + + sql_wui = f""" + SELECT * + FROM Werk + WHERE id = {werk_id} + """ + werk_list_val = self.reader.execute(sql_wui).fetchone() + werk_list_att = ('id', 'Komp_id', 'VOE_Jahr', 'Opus', 'Sammlung', 'Haupttonart', 'Titel', 'Satztitel', 'Aliasname', 'Werkverzeichnis', 'Werkverzeichnisnummer') + for tup in zip(werk_list_att, werk_list_val): + self.values[tup[0]] = tup[1] + + sql_comp = f""" + SELECT Vorname, Name + FROM Komponist_in + WHERE id = {self.values['Komp_id']} + """ + werk_comp = self.reader.execute(sql_comp).fetchone() + self.values['Vorname'] = werk_comp[0] + self.values['Name'] = werk_comp[1] + + sql_suw = f""" + SELECT * + FROM Satz + WHERE Werk_id = {werk_id} + """ + saetze = dict() + nummern = set() + suw_liste = self.reader.execute(sql_suw).fetchall() + # 0 Werk_id, 1 Lfd_Satznummer, 2 Nummer, 3 Bezeichnung, 4 Tonart, 5 Aufnahme + for satz in suw_liste: + saetze[satz[1]] = satz[2], satz[3], satz[4] + if not satz[2] is None: + nummern.add(satz[2]) + self.values['Sätze'] = saetze + if len(nummern) == 1: + self.sätze_unter_nummer = True + self.values['Nummer'] = nummern.pop() + else: + self.sätze_unter_nummer = False + + def sammlung(self): + sammlung = self.values['Sammlung'] + if not sammlung: + return 'ohne' + else: + return sammlung + + def __str__(self): + ret_str = '' + for key, value in self.values.items(): + if not value is None: + ret_str += f'{key}: {value}\n' + return ret_str + +# End Werk_unter_id + +def parse_user_input(user_in): + split_user_in = user_in.split() + command = split_user_in[0] + if command in ('a', 'n', 'q', 's', 'su'): + arguments = split_user_in[1:] + return (command, arguments) + else: + return (None, None) + +def command_line_loop(session): + user_in = '' + while not user_in == 'q': + user_in = input(f'Piano-Repertoire: {session.get_active_user()} >>> ') + command, arguments = parse_user_input(user_in) + session.invoke_command(command, arguments) + # print(f'command: {command}, arguments: {arguments}') + print(session.result()) + +def main(): + con = sqlite3.connect('repertoire.db') + db_agent = con.cursor() + session = Session(db_agent) + command_line_loop(session) + con.commit() + print('changes committed.') + con.close() + print('db-connection closed. Bye-bye!') + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/repertoire.db b/repertoire.db new file mode 100644 index 0000000000000000000000000000000000000000..bf8f70e02b9671ad1baf0f97131e3d2644844e74 GIT binary patch literal 65536 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