def find_by_key(self, key: int):
        """Auslesen eines GruppenTeilnahme-Objekts mit gegebener GruppenTeilnahme ID

        :param: key: Primärschlüsselattribut
        :return: Ein einzelnes GruppenTeilnahme-Objekt, das dem übergebenen Schlüssel entspricht,
                 None bei nicht vorhandenem DB-Tupel
        """
        result = None
        cursor = self._cnx.cursor()
        command = (
            "SELECT id, erstellungszeitpunkt, person_id, gruppen_id, ist_admin FROM gruppen_teilnahmen WHERE "
            "id={}".format(key))
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, erstellungszeitpunkt, person_id, gruppen_id,
             ist_admin) = tuples[0]
            gruppenteilnahme = GruppenTeilnahme()
            gruppenteilnahme.set_id(id)
            gruppenteilnahme.set_erstellungszeitpunkt(erstellungszeitpunkt)
            gruppenteilnahme.set_person_id(person_id)
            gruppenteilnahme.set_gruppen_id(gruppen_id)
            gruppenteilnahme.set_ist_admin(ist_admin)
            result = gruppenteilnahme
        except IndexError:
            result = None

        self._cnx.commit()
        cursor.close()

        return result
    def find_all_by_person_id(self, person_id):
        """Auslesen aller GruppenTeilnahme-Objekte mit zugehöriger Person ID

        :param person_id: Person ID
        :return: Sammlung mit GruppenTeilnahme-Objekten
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute(
            "SELECT * from gruppen_teilnahmen WHERE person_id={}".format(
                person_id))
        tuples = cursor.fetchall()

        for (id, erstellungszeitpunkt, person_id, gruppen_id,
             ist_admin) in tuples:
            gruppenteilnahme = GruppenTeilnahme()
            gruppenteilnahme.set_id(id)
            gruppenteilnahme.set_erstellungszeitpunkt(erstellungszeitpunkt)
            gruppenteilnahme.set_person_id(person_id)
            gruppenteilnahme.set_gruppen_id(gruppen_id)
            gruppenteilnahme.set_ist_admin(ist_admin)
            result.append(gruppenteilnahme)

        self._cnx.commit()
        cursor.close()

        return result
    def find_by_person_id_und_gruppen_id(self, person_id: int,
                                         gruppen_id: int):
        """Auslesen eines GruppenTeilnahme-Objekts mit vorgegebener Person ID, sowie Gruppen ID

        :param: person_id: Person ID
        :param: gruppen_id: Gruppen ID
        :return: Ein einzelnes GruppenTeilnahme-Objekt, welches zu einer Person und einer Gruppe gehört,
                 None bei nicht vorhandenem DB-Tupel
        """
        result = None
        cursor = self._cnx.cursor()
        command = "SELECT * FROM gruppen_teilnahmen WHERE person_id={} AND gruppen_id={}".format(
            person_id, gruppen_id)
        cursor.execute(command)
        tuples = cursor.fetchall()

        try:
            (id, erstellungszeitpunkt, person_id, gruppen_id,
             ist_admin) = tuples[0]
            gruppenteilnahme = GruppenTeilnahme()
            gruppenteilnahme.set_id(id)
            gruppenteilnahme.set_erstellungszeitpunkt(erstellungszeitpunkt)
            gruppenteilnahme.set_person_id(person_id)
            gruppenteilnahme.set_gruppen_id(gruppen_id)
            gruppenteilnahme.set_ist_admin(ist_admin)
            result = gruppenteilnahme
        except IndexError:
            result = None

        self._cnx.commit()
        cursor.close()

        return result
    def find_all(self):
        """Auslesen aller GruppenTeilnahme-Objekte

        :return: Sammlung mit GruppenTeilnahme-Objekten
        """
        result = []
        cursor = self._cnx.cursor()
        cursor.execute("SELECT * from gruppen_teilnahmen")
        tuples = cursor.fetchall()

        for (id, erstellungszeitpunkt, person_id, gruppen_id,
             ist_admin) in tuples:
            gruppenteilnahme = GruppenTeilnahme()
            gruppenteilnahme.set_id(id)
            gruppenteilnahme.set_erstellungszeitpunkt(erstellungszeitpunkt)
            gruppenteilnahme.set_person_id(person_id)
            gruppenteilnahme.set_gruppen_id(gruppen_id)
            gruppenteilnahme.set_ist_admin(ist_admin)
            result.append(gruppenteilnahme)

        self._cnx.commit()
        cursor.close()

        return result